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 集群就可以正常对外提供服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现