ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。
在ZooKeeper中,引入了Watch机制来实现这种分布式的通知功能。ZooKeeper允许客户端向服务端注册一个Watch监听,当服务端的一些事件触发了这个Watch,那么就会向指定客户端发送一个事件通知,来实现分布式的通知功能。
Watch机制在事件中有以下4个特点:
1.一次性触发
当Watch的对象发生改变时,将会触发此对象上Watch所对应的事件,这种监听是一次性的,后续再次发生同样的事件,也不会再次触发。
2.事件封装
Zookeeper使用WatchedEvent对象来封装服务端事件并传递。该对象包含了每个事件的三个基本属性,即通知状态(keeperState)、事件类型(EventType)和节点路径(path)。
3.异步发送
Watch的通知事件是从服务端异步发送到客户端的。
4.先注册再触发
Zookeeper中的Watch机制,必须由客户端先去服务端注册监听,这样才会触发事件的监听,并通知给客户端。
猜你喜欢:
Znode储存结构是怎样的?节点类型有几种?
Zookeeper分布式系统的集群架构介绍