ZooKeeper 集群里的 leader 和 follower 各做什么?写和读分别走哪条路?这篇在 3 节点集群上用 mntr 和包计数把请求路径量出来。
z27-1 follower zk_server_state=follower zk_followers=None zk_synced_followers=None zk_learners=None z27-2 leader zk_server_state=leader zk_followers=None zk_synced_followers=2 zk_learners=2 z27-3 follower zk_server_state=follower zk_followers=None zk_synced_followers=None zk_learners=None
连 leader:5.90 ms;连 follower:5.03 ms(follower 要多转发一跳,但差别被 fsync 的耗时淹没)
这个测量里连 follower 的结果甚至略快,属于测量噪声(单机五个 JVM 抢同一块磁盘与 CPU),所以结论只能是「没有可见的差别」。
连 follower 读 2000 次:leader 收到包 +1;连 leader 读 2000 次:leader 收到包 +2001
各节点 Zxid: {'z27-1': '0x100000263', 'z27-2': '0x100000263', 'z27-3': '0x100000263'}