Zookeeper选举过程

来源:互联网 发布:厦大网络课程中心 编辑:程序博客网 时间:2024/06/05 16:06

假设有5台机器


znode状态:looking、following、leading 、observing(提高读取效率)


初始化:

1、服务器d为1启动,广播,没有应答,此时处于looking状态

2、服务器id为2启动,与1交换,胜出;由于选举没有超过半数,此时处于looking状态

3、服务器id为3启动根据,前面的理论,被选举为leader

4、服务器id为4、5 因为前面3已经为leader,只能当小弟了

5、服务器id为3 与其他服务器同步数据,成功则为真正的“leader” , 其他的服务器则为“follower”


数据同步(leader不接受client的请求):

读,直接读就好了

写:

1、follower告之leader

2、leader通过lead_listen_port广播通知到其他的follower

3、当有超过一半follower接收到回复,leader告诉该follower可以回复客户端了


重新选举(基于fast leader算法):

条件 leader宕机,或者失去大多数follow

1、server根据自己的状态回复自己选举的serverid和上一次处理事务的zxid

2、收到回复后,计算出zxid最大的那个server,设为投票的server

3、超过一半就将这个server设置为leader




0 0
原创粉丝点击