ZooKeeper - CAP理论
CAP是分布式系统的重要理论,在大型分布式系统中一致性(Consistency),高可用性(High-Availability),分区可容忍性(Partition-tolerance)是设计者都希望能同时达到的,但是根据CAP理论一个系统最多能实现3中其2。
CAP理解:
C:Consistency, all nodes see the same data at the same time; A:Availability, reads and writes always succeed; P:Partition tolerance, the system continue to operate despite arbitray message loss or failure of part of the the system。
在分布式系统的设计中,没有一种设计可以同时满足一致性,可用性,分区容错性 3个特性。
举个例子:
我们来看一个简单的问题, 一个DB服务 搭建在两个机房(北京,广州),两个DB实例同时提供写入和读取
1. 假设DB的更新操作是同时写北京和广州的DB都成功才返回成功
在没有出现网络故障的时候,满足CA原则,C 即我的任何一个写入,更新操作成功并返回客户端完成后,分布式的所有节点在同一时间的数据完全一致, A 即我的读写操作都能够成功,但是当出现网络故障时,我不能同时保证CA,即P条件无法满足
2. 假设DB的更新操作是只写本地机房成功就返回,通过binlog/oplog回放方式同步至侧边机房
这种操作保证了在出现网络故障时,双边机房都是可以提供服务的,且读写操作都能成功,意味着他满足了AP ,但是它不满足C,因为更新操作返回成功后,双边机房的DB看到的数据会存在短暂不一致,且在网络故障时,不一致的时间差会很大(仅能保证最终一致性)
3. 假设DB的更新操作是同时写北京和广州的DB都成功才返回成功且网络故障时提供降级服务
降级服务,如停止写入,只提供读取功能,这样能保证数据是一致的,且网络故障时能提供服务,满足CP原则,但是他无法满足可用性原则。
转自:https://blog.csdn.net/jasonsungblog/article/details/49017955
posted on 2018-08-23 17:48 TrustNature 阅读(6) 评论(0) 编辑 收藏 举报