zookeeper协调原理
欢迎查看Eetal的第二十四篇博客–zookeeper协调原理
CAP原理
CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
一致性表示分布式系统中各个节点数据的一致性
可用性代表数据访问的高性能
分区容错性指的是因为同步的时间问题,数据不一致导致出现了多个不同数据版本的分区现象,但系统仍能继续正常运行(容错)
很显然,三者最多只能取其二
分区容错性与一致性共存(同步需要阻塞)必会与可用性冲突
分区容错性与可用性共存(数据不同步)必会与一致性共存冲突
可用性与一致性共存必会与分区容错性冲突(实际上这个是不实际的需求,因为分布式环境下因为网络通信的延迟分区容错性是必要的)
综上,大部分分布式架构都是实现数据的最终一致性而非实现强一致性(因为分区容错性的必然存在)
zookeeper的zap协议就是对2pc进一步提高分区容错性与可用性而降低强一致性的一种协议,同时其保证最终一致性,所以在分布式环境下仍是可用的
事务请求
所有事务请求(增删改)都会转发到leader由leader处理
zookeeper内部是依赖一个改进版的2pc——ZAB协议
传统2pc
传统2pc分为两个阶段preCommit和commit阶段
preCommit阶段由leader向所有节点