客户端怎么连上 ZooKeeper 集群?连接串里的多个地址怎么用?服务端挂了会发生什么?这篇用真实的 3 节点集群和 kazoo 把连接建立、握手确认和故障转移逐步量出来。
连到的客户端端口 → 次数: {7300: 4, 7301: 5, 7302: 3}连接串里的写法是 host1:port,host2:port,host3:port(可以带 chroot 路径后缀)。不同语言的客户端选择策略可能不同,这里测的是 kazoo。
客户端会话 id 0x3000bc80dc50003,连在端口 7302(服务端 z11-3,leader) 该节点的 cons: 127.0.0.1:51083[1](queued=0,recved=1,sent=1,sid=0x3000bc80dc50003,lop=SESS,est=1790817899852,to=8000,lcxid=0x0,lzxid=0x100000019,lresp=197660424,llat=
状态变化(相对 kill 的毫秒): [(3, 'SUSPENDED'), (350, 'CONNECTED')] 重连到端口 7301(原来 7302);会话 id 不变:True;临时节点还在:True
SUSPENDED 表示「连接断了、会话还可能有效」,此时客户端不应当假设自己持有的锁、临时节点已经失效,也不应当继续假设它们有效——要等到重新 CONNECTED 或者 LOST 才能决定(下一篇看 LOST)。
单地址客户端在节点停止 3 秒后的状态: ['SUSPENDED'] | 连接状态 connected = False 节点重新启动后: ['SUSPENDED', 'CONNECTED'] | connected = True