可扩展性


本节目标: 了解可扩展性及其在系统设计中的重要性。

什么是可扩展性?

可扩展性 是系统在不影响性能的情况下处理不断增加的工作负载的能力。

eg: 搜索引擎必须随其业务发展容纳越来越多的用户, 并增加索引的数据量。

工作负载可以有不同的类型:

  • 请求工作量:系统处理的请求数。
  • 数据/存储工作量:系统存储的数据量。

标准

以下是可扩展性的不同维度:

  • 大小可扩展性:如果我们可以简单地向系统添加额外的用户和资源,则系统是大小可扩展的。
  • 管理可扩展性:如果新的组织或用户轻松共享系统, 则系统是管理可扩展的 。
  • 地理可扩展性:在部署成本不同的地理位置, 系统可以保持正常的性能, 则该系统是地理可扩展的。

不同的可扩展性方法

以下是实现可扩展性的不同方法。

垂直可扩展性——向上扩展

垂直扩展,也称为“向上扩展”,是指通过为现有设备提供额外功能(例如,额外的 CPU 或 RAM)来进行扩展。垂直扩展允许我们扩展当前的硬件或软件容量,但该扩展方案存在明显的瓶颈, 很容易达到性能上限。垂直扩展需要庞大的资金支持。

横向扩展——向外扩展

水平扩展,也称为“向外扩展”,是指增加网络中的机器数量。甚至, 我们可以使用一些商业节点(云服务器),它们的成本相对更低。这要求我们构建一个系统, 使很多节点都可以在其中工作, 从整体上看, 它们就像一个服务器一样。