ZooKeeper
参考 Paxos
算法,专门设计了一种支持崩溃恢复的原子广播协议 Zab
(Zookeeper Atomic Broadcast
),Leader
选举是其核心思想,也是保证ZooKeeper
数据一致性的关键所在。
[](()二、基本概念
[](()1、服务器角色
一个正常运行的zk集群中,一定存在两种服务器角色 Leader
和 Follower
,Leader
负责事务请求处理协调和数据同步以保证数据顺序最终一致性;Follower
具有投票,只读请求可以自己处理,但是事务请求需要转发给Leader
。还有一种角色 Observer
,和 Follower
统称为 Learner
,但是没有投票权,也不参与过半数机制。
[](()2、票据ZXID和myid
在进行Leader
选举时,ZXID
和myid
作为投票依据,比较服务之间ZXID
和myid
的大小来判定票投给谁,最终得票过半数的成为Leader
。