会话(Session)是 ZooKeeper 里最核心的概念:临时节点、watch、重连都围绕它。这篇用 3 节点集群看会话 id 怎么构成、空闲时怎么保活、服务端怎么跟踪它。
连 1 号节点(follower)→ 会话 id 0x01000bc837b30000 连 2 号节点(follower)→ 会话 id 0x02000bc838110000 连 3 号节点(leader)→ 会话 id 0x03000bc837b40000
空闲 12 秒:连接发送包数 1 → 7(多了 6 个,都是 ping 的响应);6 秒超时 ÷ 3 = 2 秒一个 ping → 约 6 个
如果客户端持续有请求,请求本身就能保活;只有空闲时才需要 ping。
leader(z12-3):dump 共 17 行,前几行: ['SessionTracker dump:', 'Session Sets (4)/(2):', '0 expire at Thu Oct 01 09:25:25 CST 2026:', '0 expire at Thu Oct 01 09:25:27 CST 2026:'] follower(z12-1):dump 共 15 行,前几行: ['SessionTracker dump:', 'Global Sessions(2):', '0x1000bc837b30001\t6000ms', '0x1000bc837b30002\t8000ms'] leader 的 dump 里含该会话与临时节点: True
leader 的 zk_global_sessions = 2 | zk_local_sessions = 0 | follower 的 zk_global_sessions = 2
「本地会话」(local session)是 ZooKeeper 的可选特性,本文没有启用也没有验证。