ZooKeeper 集群运行机制

运行机制

  • ZooKeeper 集群安装时所有 zk 节点不分主/从节点
  • ZooKeeper 集群运行时会选举一个节点作为主节点( Leader ),其他节点作为从节点( Follower )
  • ZooKeeper 集群中只有主节点(Leader) 对外提供服务,从节点(Follower)仅作为备份节点

选举投票机制

投票规则:所有 ZK 节点中获得投票数超过 ZK 集群节点半数以上则为 Leader,其他节点为 Follower

  • ZK1 启动后 QuorumPeerMain 进程会向 ZK 集群进行组播投票,发现只有自己,只能投自己
  • ZK2 启动后 QuorumPeerMain 进程会向 ZK 集群进行组播投票,发现自己的 myid 更大,投自己
  • 目前 ZK1 和 ZK2 各自获得 1 票无法胜出,需要进行新一轮投票
  • 新一轮投票中,ZK1 的 myid 更小这次会投票给 ZK2,ZK2 自然也投票给自己,这样 ZK2 获得 2
  • ZK 集群一共 3 个 ZK 节点, ZK2 获得 2 票,超过半数以上投票,所以 ZK2 获胜成为 Leader,这时 ZK3 启动发现集群 ZK 节点已经有 Leader,则自动变成 Follower

ZooKeeper 高可靠、高可用

  • ZooKeeper 集群节点初始配置应该为奇数
  • 只要 ZooKeeper 集群中宕机的节点数小于半数,ZooKeeper 集群就可以正常对外提供服务
posted @   追こするれい的人  阅读(132)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示