ZooKeeper-9.8 服务器与监视点- 高飞网

9.8 服务器与监视点

2018-06-13 12:41:13.0

    监视点是由读取操作所设置的一次性触发器,每个监视点由一个特定的操作来触发。为了在服务端管理监视点,ZooKeeper的服务端实现了监视点管理器(watch manager)。一个WatchManager类的实例负责管理当前已被注册的监视点列表,并负责触发它们。所有类型的服务器(包括独立服务器、群首服务器、追随者服务器和观察者服务器)都使用同样的方式处理监视点。

    DataTree类中持有一个监视点管理器来负责子节点和数据的监控,对于这两类监控,当处理一个设置监视点的读请求时,该类就会把这个监视点加入manager的监视点列表。类似的,当处理一个事务时,该类也会查找是否需要触发相应的监视点。如果发现有监视点需要触发,该类就会调用manager的触发 方法。添加一个监视点和触发一个监视点都会以一个read请求或FinalRequestProcessor类的一个事务开始。

    在服务端触发了一个监视点,最终会传播到客户端。负责处理传播的是服务端的cnxn对象(参考ServerCnxn类)。

    监视点只会保存在内存,而不会持久化到硬盘。当客户端与服务端的连接断开时,它的所有监视点会从内存清除。因为客户端库也会维护一份监视点的数据,在重连之后监视点数据会再次被同步到服务端。

上一篇:9.7 服务器与会话
下一篇:9.9 客户端