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