过程

Leader 选举过程,本质就是广播优先级消息的过程,选出数据最新的服务节点,选出优先级最高的服务节点,基本步骤:

  1. 各个服务器节点,广播自己的优先级标识 (sid,zxid)
  2. 服务器节点收到其他广播消息后,跟自己的优先级对比,自己优先级低,则变更当前节点投票的优先级(sid,zxid) ,并广播变更后的结果
  3. 当任意一个服务器节点收到的投票数,超过了法定数量(quorum),则,升级为 Leader,并广播结果。

zookeeper读书笔记四 leader选举

关于sid和zxid的详解:

  1. 服务器节点的优先级标识:(sid,zxid)
  2. 优先比较 zxid (事务 ID),其次比较sid(服务器ID)
  3. sid (服务器 ID) 是节点配置文件中设定的
  4. 当前服务器上的 zxid 是什么时候设定的?是在 Leader 执行事务过程中,向当前服务器同步的?如何活的当前服务器上的 zxid?
  5. 是什么原因造成每个zookeeper节点的zxid不同的?
  6. 当5个节点中挂掉3个follower的时候,也会进行leader选举吧
  7. 选举过程中,服务器节点会等待一定时间,再广播投票信息,时间间隔一般设定为 200 ms
  8. 原子广播具有顺序性吗?会不会出现两台zookeeper同时确定不同的leader,同时广播不同的leader信息?

参考链接: http://www.sohu.com/a/341338245_120104204

相关文章: