分区容忍系统

动机

应用需要存储持久的信息,可用性取决于数据的可用性

共识的复杂度

需要共识来保证数据的一致性

冗余的代价随着节点数的增加而增加:

  • 当所有节点都参与时,共识算法的消息数量与节点数呈线性增加
  • 平方的复杂度\rArr可扩展性差

因此只使用一部分节点参与共识,例如每个集群5台机器(Chubby)。

故障恢复也需要使用共识来决定哪些机器在运行或宕机,每个故障都需要运行共识算法,因此也与节点数成比例增加(线性)。当故障频率不高的时候开销不大。

故障

  • 硬件、软件
  • 机架、网络交换机、电源
  • 运行较慢的计算机和网络
  • 数据中心

大型系统中总会有一部分磁盘、计算机或交换器出现故障,因此需要考虑故障的发生。

可扩展性(Scalability)

通常意义上,可扩展性指通过增加资源来提高性能(吞吐量、延迟或两者同时):

  • 更多的工作单元(水平扩展):关注每秒处理的请求数量
  • 更大的工作单元(垂直扩展):关注解决更大的问题(高性能计算)

但是有时可扩展性也指,通过增加资源来提高冗余度,同时不降低性能

  • 提高持久性(durability)
  • 提高可用性(availability)

异构系统(heterogenous systems)中,新增加的机器能力比初始的机器更强,可扩展性需要解决这个问题。

系统规模越大,每台机器需要的运行系统的人员就越少(economy of scale)。

继续阅读“分区容忍系统”