分布式系统 & CAP 定理 & BASE 理论

分布式系统

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。 其目的是 利用更多的机器,处理更多的数据 。

个人理解,很多主机组成一个分布式系统,统一完成某种任务或对外提供某种服务。

值得注意的是,分布式系统中涉及许多问题(在真正的架构中,有各种分布式系统,其组成一起又形成一整个分布式系统),以及有许多解决方案与框架,接下来将某种框架或解决方案称为组件,以组件的方式进行学习。

CAP 定理

指在一个 分布式系统 中,Consistency (一致性)、Availability (可用性)、Partition tolerance (分区容错性) 三者不可兼得 。

  • 一致性 C : 在分布式系统中所有数据备份,在同一时刻都是同样的值(在同一个时刻访问集群中任何一台主机,都会返回同样的数据)
  • 可用性 A : 当网络通畅,所有主机正常工作时,保证每个请求不管成功或者失败都有响应 (在任何时候整个集群都可以对外提供服务,这里的失败指的是业务中的失败,而不是因为集群自身原因导致的失败)
  • 分区容错性 P : 系统中任何信息的丢失或失败不会影响系统的继续运作(当集群出现网络分区,或某些主机宕机时,整体依然可以正常工作)

可用性 A 中默认网络通畅,则集群中没有出现宕机或网络分区,在出现异常情况下的可用保证属于分区容错性 P 。如果一个分布式系统实现了 A 但没实现 P,再出现网络分区或宕机的情况下依然会出现不可用的情况。只要在集群没有出现分区或宕机的情况下都可用则认为该集群实现了高可用 A。

三者只能选择其二:

AC: 实现一致性,一般需要将数据存在特定的主机,而实现可用性,则集群不能花大量时间在数据同步等操作。则此时会出现分区不可容错,即当前数据的主机如果宕机或因出现分区而无法通讯,则导致不可用。

AP: 需要使用主从等结构,同时需要进行数据同步等操作,则无法实现高可用,数据同步时不可用。

CP: 需要分区容错性,数据需要存储在多台主机中,而高可用,则表示数据同步时依然需要可用,则数据会出现不一致的情况。

一般而言,分区容错性为必须,因为网络分区和宕机很难完全避免。而一致性和可用性则需要根据具体业务二选一 。

BASE 理论

BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性,但可采用合适的方式达到最终一致性。

BASE 指

  • 基本可用 Basically Available :在分布式系统出现故障的时候,允许损失部分可用性,保证核心可用。例如服务降级
  • 软状态 Soft State:允许数据同步中存在的中间状态
  • 最终一致性 Eventual Consistency:不需要实时保持一致,只需要经过同步后最终能到达一致。