Java学习之路——CAP理论

CAP理论

加州大学伯克利分校 Eric Brewer教授提出一个分布式系统特性具CAP理论:
在分布式系统中,是不存在同时满足一致性 Consistency可用性 Availability分区容错性 Partition Tolerance三者的。在绝大多数的场景,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证最终一致性即可。

Consistency(一致性)
 强一致性就是在客户端任何时候看到各节点的数据都是一致的(All nodes see the same data at the same time)。

Availability(可用性)
 高可用性就是在任何时候都可以读写(Reads and writes always succeed)。

Partition tolerance(分区容错性)
 分区容错性是在网络故障、某些节点不能通信的时候系统仍能继续工作(The system continue to operate despite arbitrary message loss or failure of part of the the system)。以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

 

形成原因

一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。

当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。

提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。

然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。

总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章