目前,很多测试工程师,甚至是开发工程师都一直分不清楚可伸缩性和可扩展性这两个概念,主要原因是从字面上看这两个概念的确有相似之处。但实际情况呢,可伸缩性和可扩展性这两两个概念的含义相差十万八千里,根本不具有任何可比性。
所以,我将通过两篇文章来和你分享,网站的伸缩性和可扩展性架构设计到底是什么,以及在设计测试用例时需要注意哪些点。
可伸缩性和可扩展性的概念区别
可伸缩性翻译自 Scalability,指的是通过简单地增加硬件配置而使服务处理能力呈线性增长的能力。最简单直观的例子,就是通过在应用服务器集群中增加更多的节点,来提高整个集群的处理能力。
而可扩展性翻译自 Extensibility,指的是网站的架构设计能够快速适应需求的变化,当需要增加新的功能实现时,对原有架构不需要做修改或者做很少的修改就能够快速满足新的业务需求。
接下来,我就先和你分享下网站的可伸缩性架构。而关于网站的可扩展性架构设计,我会在下一篇文章中和你详细分享。
分层的可伸缩性架构
网站的可伸缩性架构设计主要包含两个层面的含义:
- 一个是指,根据功能进行物理分离来实现伸缩;
- 另一个是指,物理分离后的单一功能通过增加或者减少硬件来实现伸缩。
在根据功能本身进行物理分离来实现伸缩的过程中,还有两种不同的实现方式:
- 一种是功能的“横切”,比如一个电商网站的购物功能从上至下就可以分为界面 UI 层、业务逻辑处理层、公共服务层和数据库层,如果我们将这些层区分开来,每个层就可以独立实现可伸缩;
图 1 功能“横切”示意图
- 另一种是功能的“纵切”,比如一个电商网站可以根据经营的业务范围(比如书店、生鲜、家电和日化用品等)进行功能模块的划分,划分后的每个业务模块都可以独立地根据业务流量和压力来实现最适合自己规模的伸缩性设计。
版权归原作者 程序员zhi路 所有, 如有侵权,请联系我们删除。