文件名称:处理状态变化-intouch2017培训资料
文件大小:4.44MB
文件格式:PDF
更新时间:2024-06-30 01:12:56
ZooKeeper 分布式
第4章 处理状态变化 在应用程序中,需要知道ZooKeeper集合的状态,这种情况并不少 见。例如,在第1章的例子中,备份主节点需要知道主要主节点已经崩 溃,从节点需要知道任务分配给了自己,甚至ZooKeeper的客户端会定 时轮询ZooKeeper集合,检查系统状态是否发生了变化。然而轮询方式 并非高效的方式,尤其是在期望的变化发生频率很低时。 举例说明,在主要主节点崩溃时,备份主节点需要知道这一情况, 以便它们可以进行故障处理。为了减少主节点崩溃后的恢复时间,我们 需要频繁轮询,如每50毫秒,只是为了用示例说明积极轮询的情况。在 这种情况下,每个备份主节点每秒会产生20个请求,如果有多个备份主 节点,备份主节点的数量乘上这个频率,就得到了为得到主要主节点状 态而轮询ZooKeeper所消耗的全部请求量,即使像ZooKeeper这样的系统 处理这个数量请求也非常简单,但主要主节点崩溃的情况很少发生,因 此这些请求其实是多余的。假设我们通过增加主节点状态查询的轮询周 期来减少对ZooKeeper的查询数量,如1秒,周期时间的增加则会导致主 节点崩溃时恢复时间的增加。 我们完全可以通过ZooKeeper通知客户端感兴趣的具体事件来避免 轮询的调优和轮询流量。ZooKeeper提供了处理变化的重要机制——监 视点(watch)。通过监视点,客户端可以对指定的znode节点注册一个