可扩展性
本节目标: 了解可扩展性及其在系统设计中的重要性。
什么是可扩展性?
可扩展性 是系统在不影响性能的情况下处理不断增加的工作负载的能力。
eg: 搜索引擎必须随其业务发展容纳越来越多的用户, 并增加索引的数据量。
工作负载可以有不同的类型:
- 请求工作量:系统处理的请求数。
- 数据/存储工作量:系统存储的数据量。
标准
以下是可扩展性的不同维度:
- 大小可扩展性:如果我们可以简单地向系统添加额外的用户和资源,则系统是大小可扩展的。
- 管理可扩展性:如果新的组织或用户轻松共享系统, 则系统是管理可扩展的 。
- 地理可扩展性:在部署成本不同的地理位置, 系统可以保持正常的性能, 则该系统是地理可扩展的。
不同的可扩展性方法
以下是实现可扩展性的不同方法。
垂直可扩展性——向上扩展
垂直扩展,也称为“向上扩展”,是指通过为现有设备提供额外功能(例如,额外的 CPU 或 RAM)来进行扩展。垂直扩展允许我们扩展当前的硬件或软件容量,但该扩展方案存在明显的瓶颈, 很容易达到性能上限。垂直扩展需要庞大的资金支持。
横向扩展——向外扩展
水平扩展,也称为“向外扩展”,是指增加网络中的机器数量。甚至, 我们可以使用一些商业节点(云服务器),它们的成本相对更低。这要求我们构建一个系统, 使很多节点都可以在其中工作, 从整体上看, 它们就像一个服务器一样。