网络故障可以说是分布式系统天生的宿敌.如果永远不发生网络故障,我们实际上可以设计出高可用强一致的分布式系统.可惜的是不发生网络故障的分布式环境还不存在,ZK 使用过程中也需要小心的应付网络故障. 让我们先忘掉故障发生的情况,首先来看到 ZK 对网络连接的处理.ZK 客户端启动时带有所有可用的服务器的信息,它会随机选择和其中一台服务器尝试连接,在正常的成功连接的情况下,ZK 客户端和服务端会建立起一个会话(session),在会话超时之前服务端会响应客户端的请求,每次新的请求都会刷新会话超时的时间…