zookeeper工作机制
投票算法:Paxos算法,衍生的azb算法;
配置文件包括三台机器min1,min2,min3;投票,投给id大的;
时序 |
事件 |
Min1【id=1】 |
Min2【id=2】 |
Min3【id=3】 |
1 |
Min1启动 |
投票给min1 得票1(1小于半数2票,继续投) |
得票0 |
得票0 |
2 |
Min1启动 Min2启动 |
min1未发现min2 投票给min1 得票: min1 : 1 min2:1 (小于2票,继续投) |
min2未发现min1 投票给min2 得票: min1 : 1 min2:1 (小于2票,继续投) |
|
3 |
|
发现了min2,又启动了投票,投给id大的; 投票给min2 得票: min1 : 0 min2:2 (min2:leader,min1:follower) |
投给id大的;
投票给min2 得票: min1 : 0 min2:2 (min2:leader,min1:follower) |
|
4 |
Min3启动 |
(min2:leader,min1:follower) |
(min2:leader,min1:follower) |
发现已经有leader,直接变为follower |
5 |
|
发现了min3为follower (min2:leader,min1:follower,min3:follower) |
发现了min3为follower (min2:leader,min1:follower,min3:follower) |
(min2:leader,min1:follower,min3:follower) |
架构如下图: