区块链原理、设计与应用(第2版)
上QQ阅读APP看书,第一时间看更新

4.4.1 定义

CAP原理:分布式系统无法同时确保一致性(Consistency)、可用性(Availability)和分区容忍性(Partition),设计中往往需要弱化对某个特性的需求。

一致性、可用性和分区容忍性的具体含义如下。

●一致性:任何事务应该都是原子的,所有副本上的状态都是事务成功提交后的结果,并保持强一致。

●可用性:系统(非失败节点)能在有限时间内完成对操作请求的应答。

●分区容忍性:系统中的网络可能发生分区故障(成为多个子网,甚至出现节点上线和下线),即节点之间的通信无法保障;而网络故障不应该影响到系统正常服务。

CAP原理认为,分布式系统最多只能保证以上3项特性中的两项特性。

比较直观地理解,当网络可能出现分区时,系统是无法同时保证一致性和可用性的。要么节点收到请求后,因为没有得到其他节点的确认而不应答(牺牲可用性);要么节点只能应答非一致的结果(牺牲一致性)。

由于大部分时候网络被认为是可靠的,因此系统可以提供一致可靠的服务;当网络不可靠时,系统要么牺牲掉一致性(多数场景下),要么牺牲掉可用性。

注意

网络分区是可能存在的,出现分区情况后很可能会导致“脑裂”现象。