ZooKeeper-5.3 群首选举和外部资源- 高飞网

5.3 群首选举和外部资源

2018-06-01 14:50:44.0

    ZooKeeper为所有客户端提供了系统的一致性视图,只要客户端与ZooKeeper进行任何交互操作,ZooKeeper都会保持同步。然而,ZooKeeper无法保护与外部设备的交互操作。

    当运行客户端进程的主机发生过载等情况导致了进程延迟,这会影响与ZooKeeper服务端交互的及时性。一方面,客户端无法与服务端正常的发送心跳信息,导致会话超时;另一方面,主机上本地线程的调度会导致不可预知的情况。

    当Java进行垃圾回收时,可能会出现长时间的延迟,这个延迟可能会使ZooKeeper认为这个客户端的会话已经超时。

    时钟偏移也可能导致类似问题。因系统超载而导致时钟冻结,时钟偏移会导致时间变慢或落后,使得客户端认为自己还安全地处于超时周期之内,因此仍然具有管理权,尽管其会话已经被ZooKeeper置为过期。

    解决这个问题有几个方法:

    1)一个方法是确保应用不会在超载或时钟偏移的环境中运行
    2)通过ZooKeeper扩展对外部设备协作的数据,使用隔离技巧,分布式系统中常常使用这种方法用于确保资源的独占访问。

上一篇:5.2 不可恢复的故障
下一篇:6.1 使用ACL