-
2017年Intouch培训资料关于可恢复故障部分
资源介绍
5.1 可恢复的故障
ZooKeeper呈现给使用某些状态的所有客户端进程一致性的状态视
图。当一个客户端从ZooKeeper获得响应时,客户端可以非常肯定这个
响应信息与其他响应信息或其他客户端所接收的响应均保持一致性。有
时,ZooKeeper客户端库与ZooKeeper服务的连接会丢失,而且无法提供
一致性保障的信息,当客户端库发现自己处于这种情况时,就会使用
Disconnected事件和ConnectionLossException异常来表示自己无法了解当
前的系统状态。
当然,ZooKeeper客户端库会积极地尝试,使自己离开这种情况,
它会不断尝试重新连接另一个ZooKeeper服务器,直到最终重新建立了
会话。一旦会话重新建立,ZooKeeper会产生一个SyncConnected事件,
并开始处理请求。ZooKeeper还会注册之前已经注册过的监视点,并会
对失去连接这段时间发生的变更产生监视点事件。
Disconnected事件和ConnectionLossException异常的产生的一个典型
原因是因为ZooKeeper服务器故障。图5-3展示了这种故障的一个示例。
在该例子中,客户端连接到服务器s2 ,其中s2 是两个活动ZooKeeper服
务器中的一个,当s2 发生故障,客户端的Watcher对象就会收到
Disconnected事件,并且,所有进行中的请求都会返回
ConnectionLossException异常。整个ZooKeeper服务本身依然正常,因为