ZooKeeper-4.1 单次触发器- 高飞网

4.1 单次触发器

2018-05-31 10:59:30.0

    在应用程序中,当需要知道ZooKeeper集合的状态时,一般有两种方式。第一种是简单的轮询,但轮询的效率低下,会造成大量无效的请求,尤其在期望的变化发生频率很低的时候。

    第二种就是异步通知的方式。当变化发生时,通过通知告知状态。

    ZooKeeper提供了处理变化的重要机制——监视点(watch)。

事件(event):表示一个znode节点执行了更新操作。

监视点(watch):表示一个与之关联的znode节点和事件类型组成的单次触发器。

通知(notification):注册了监视点的应用客户端收到的事件报告的消息。

当应用程序注册了一个监视点来接收通知,匹配该监视点条件的第一个事件会触发监视点的通知,并且最多只触发一次。

客户端设置的每个监视点与会话关联,如果会话过期,等待中的监视点将会被删除。不过监视点可以跨越不同服务端的连接而保持。

注:单次触发会丢失事件。但丢失事件通常并不是问题,因为任何在接收通知与注册新监视点之间的变化情况,均可以通过读取ZooKeeper的状态信息来获得。