写点什么

zookeeper- 运行期间的 leader 选举与 observer

作者:zarmnosaj
  • 2022 年 7 月 21 日
  • 本文字数:734 字

    阅读完需:约 2 分钟

服务器运行时期的 Leader 选举

在 zookeeper 集群环境的运行期间,leader 与非 leader 服务器节点都各自工作,当有非 leader 服务器节点宕机或有新节点加入,也不会影响到 leader 的运行,但是一旦 leader 服务器节点宕机了,整个集群就会暂时对外停止服务,这个期间会进入新一轮的 leader 选举,其过程和启动时期的 Leader 选举过程基本一致。


举个例子,假设正在运行的有 server1、server2、server3 三台 zookeeper 服务器节点,当前 leader 是 server2 节点,在某个时间 server2 节点挂了,此时便会开始新 Leader 的选举。选举过程如下:


  1. leader 宕机后,其他服务器会将自己的服务器状态变更为 looking,然后都开始进入 leader 选举的过程。

  2. 每个 server 发出一个投票。在运行期间,每个服务器上的 zxid 可能不同,此时假定 server1 的 zxid 为 122,server3 的 zxid 为 122,在第一轮投票中,server1 和 server3 都会投自己,产生投票(1, 122),(3, 122),然后各自将投票发送给集群中所有机器。

  3. 接收来自各个服务器的投票。与启动时过程相同

  4. 处理投票。与启动时过程相同,此时,server3 将会成为 leader。

  5. 统计投票。与启动时过程相同。

  6. 改变服务器的状态。与启动时过程相同。

observer 角色及其配置

observer 角色有几个特点如下:


  1. 不参与集群的 leader 选举,如此就算 observer 节点挂了,也不会影响到集群环境的运行

  2. 不参与集群中写数据时的 ack 反馈


observer 角色主要是对 leader 和 follower 的工作进行观察监听,动态扩展了 zookeeper 集群,也不影响集群的性能。

zookeeperAPI 连接集群

API 连接参数如下:ZooKeeper(String connectionString, int sessionTimeout, Watcher watcher)


  1. connectionString : zooKeeper 集合主机。

  2. sessionTimeout : 会话超时(以毫秒为单位)。

  3. watcher : 实现“监视器”界面的对象。ZooKeeper 集合通过监视器对象返回连接状态。

发布于: 刚刚阅读数: 4
用户头像

zarmnosaj

关注

靡不有初,鲜克有终 2020.02.06 加入

成都后端混子

评论

发布
暂无评论
zookeeper-运行期间的leader选举与observer_7月月更_zarmnosaj_InfoQ写作社区