
9
第 1 章
可扩展系统简介
在过去
20
年里,软件系统的规模、复杂性和容量都出现了前所未有的增长。这种增长
速度在未来
20
年内几乎不可能放缓
—
现在几乎无法想象未来系统的样子。但是,我
们可以确定的一件事情是,越来越多的软件系统将需要在满足持续增长需求的基础上来
构建
—
更多请求、更多数据和更多分析
—
作为系统设计的主要驱动力。
可扩展
(
scalable
)是软件工程中用来描述软件系统能够适应增长的术语。在本章中,我
将探讨可扩展能力的确切含义,俗称
可扩展性
(
scalability
,对此术语你肯定耳熟能详)。
我将借助一些案例,用确凿数据来说明当代应用程序的功能和特征,然后再引出我们今
天常规构建的大型系统的起源。最后,我将介绍实现可扩展、可复制和最优化系统的两
个基本原则,它们将会在本书的其余部分以各种形式重复出现,并用来检查架构的可扩
展性与其他质量属性之间不可磨灭的联系。
1.1
可扩展性的定义
直观地说,可扩展性是一个非常简单的概念。维基百科对它的定义(
https://oreil.ly/
JsYXf
)是“可扩展性是通过添加更多资源来处理越来越多的工作的系统属性”。我们都
知道如何扩展一个高速公路系统
—
增加更多的车道,这样它就可以承载更多的车辆。
我喜欢的一些人知道如何扩大啤酒生产规模
—
他们通过增加酿造容器的数量和扩大容
器的体积、增加执行和管理酿造啤酒的人员数量,以及增加用来盛新鲜美味啤酒的桶的
数量来实现产能扩大。任何物理系统
—
交通系统、机场,以及建筑物中的电梯
—
以
及增加容量的途径都是显而易见的。
与物理系统不同,软件系统在某种程度上是无定形的 ...