
可扩展系统简介
|
11
尽管如此,在系统的发展过程中,提高系统性能和可扩展性成为当务之急甚至影响系统
存亡的现象比比皆是。有吸引力的功能和实用性高的特性带来了成功,但也带来了更多
需要处理的请求和更多需要管理的数据。这往往存在一个临界点,在轻负载下有意义的
设计和决策突然变成了技术债务
注
1
1
。以下来自系统外部的事件通常会引爆临界点:
2020
年
3
月或
4
月的媒体上有许多关于政府失业和冠状病毒大流行导致超市在线订购网站无
法承受激增的需求而崩溃的报道。
通过增加资源来增加系统在某个维度上的容量称为
纵向扩展
(
scaling up
)或
横向扩展
(
scaling out
)
—
稍后我将探讨它们之间的区别。此外,与物理系统不同,能够
按比例
缩小
(
scale down
)系统容量以降低成本同样重要。
一个非常典型的例子是
Netflix
,它需要处理来自不同区域的可预测的昼夜请求。概括地
说,在任何地理区域,晚上
9
点观看
Netflix
的人比早上
5
点要多。这使得
Netflix
可以
在访问量较低时减少资源,从而节省了在亚马逊云中运行节点的成本,同时也带来了社
会价值,如降低数据中心能源功耗等。比较一下
Netflix
和高速公路:高速公路晚上很少
有车,但我们不会撤回车道(修理除外)。为数不多的司机可以在全部道路上随心所欲
地行驶。在软件系统中,我们可以在几秒钟内扩展和收缩系统的处理能力,以满足瞬时
访问量。与物理系统相比,我们部署的策略大有不同。
关于软件系统的可扩展性还有很多需要考虑的地方,让我们先探讨
2021
年左右的一些
当代软件系统的规模,然后再回到这些问题。 ...