Back to Posts

ZK-一致性协议

Posted in 分布式

参考

zookeeper与paxos的相似点:

  • leader给予follwer提供参考值
  • leader提交建议之前会等待follwer的通知
  • 每个请求建议(应该是zxid),会包含一个纪元号,和Paxos的投票选举类似
    但是其主要差距在于,zab主机宕机备份恢复为主,而不是状态机副本为主。

primay-backup和state machine replication的区别

state machine replication能保证每次接收到的有序请求,都能得到正确的处理 primary-backup系统比如zookeeper,副本可以按增量式状态排序(zxid前32位表示所属会议,后32位是递增数字), 是由主要副本(应该是leader)生成发送给其他follwer的,state machine replication不一样,如果主机宕了,客户端就找不到可以处理请求的机器了。

zookeeper专门的一致性算法——zab

zab是zookeeper atomic broadcast 的缩写;在以上两种概念之下,zab对于state machine repliacation的具体实现方式:
对象设计:

  • leader:
    整个zk会议中,负责更新状态的服务;兼职发起投票
  • leaner:
    • follower:处理客户端的请求,并可以参与投票和选举
    • observer:处理客户端的请求,但是不可以参与投票和选举

zab的两种模式:
广播:
这种状态是zk运行的正常状态,可以处理正常请求
恢复:
由于leader宕了,需要重新选择一个leader出来

  • 选主流程 模式方式是fast-paxos,首先会获取所有follwer的zxid(默认首推发其选举者的),然后将zxid最大者的,像其他follwer发起投票,如果该zxid获得超过半数以上的支持, 会将其设置为leader,其他follower则更新自己zxid前32位为新leader的zxid前32位。

你看那个人好像一条狗啊

Read Next

老年代的垃圾回收器