5月27日 21:35
Zookeeper 版本演进有哪些关键节点?升级怎么做?
核心答案
ZooKeeper 从 2008 年开源至今,真正值得关注的版本节点只有几个:
- 3.3.x 引入 Observer 角色,横向扩展读能力不拖慢写吞吐;
- 3.4.x 剔除 UDP 选举,只保留 TCP 版 FastLeaderElection,部署最广的稳定版;
- 3.5.x 新增容器节点(无子节点自动删除)、TTL 节点、动态 reconfig(不停机增减节点),从这版起支持在线扩缩容;
- 3.6.x 支持 7 种节点类型,TLS 加密传输,内存和日志预分配优化;
- 3.8.x 默认开启安全配置,增强容器化/K8s 适配。
版本选择:新项目直接 3.8.x;老集群跑 3.4.x 且稳定、无动态扩容需求就不必急着升。
升级怎么做
滚动升级是标准做法——逐台停 follower、换包、重启,最后 leader 切换后再升原 leader。存活节点过半集群就可用。跨大版本需分步走:3.4 → 3.5 → 3.6 → 目标版本,不能跳级。升级前备份 dataDir 和事务日志,3.4.x 老集群可能只有日志没快照,首次启动新版会全量回放,耗时较长。
追问
Observer 和 Follower 的区别? Observer 不参与投票和写请求过半确认,只异步同步数据并处理读请求,适合跨机房或读多写少场景。
3.5 的动态 reconfig 有什么坑? reconfig 是原子操作,但新旧节点网络不通或 myid 冲突时集群会卡在选举状态。先在测试环境验证,生产操作时保留回滚配置。
KRaft 会取代 ZK 吗? Kafka KRaft 已移除 ZK 依赖,但 ZK 仍被 Dubbo、HBase 等广泛使用。短期不会淘汰,新项目可考虑 KRaft 版 Kafka 减少运维组件。