首页 > 其他 > 详细

zookeeper之 watch机制

时间:2020-05-06 16:43:45      阅读:96      评论:0      收藏:0      [点我收藏+]

zk作为一款成熟的分布式协调框架,订阅-发布功能是很重要的一个。所谓订阅发布功能,其实说白了就是观察者模式。观察者会订阅一些感兴趣的主题,然后这些主题一旦变化了,就会自动通知到这些观察者。

zk的订阅发布也就是watch机制,是一个轻量级的设计。因为它采用了一种推拉结合的模式。一旦服务端感知主题变了,那么只会发送一个事件类型和节点信息给关注的客户端,而不会包括具体的变更内容,所以事件本身是轻量级的,这就是所谓的“推”部分。然后,收到变更通知的客户端需要自己去拉变更的数据,这就是“拉”部分。
watch机制

一、目标是谁?

 zode  /path (节点操作来触发watch)

  1、创建

  2、修改

  3、删除

  4、查询

  5、是否存在

二、使用

  2.1 创建一个对象

  2.2 注册

    2.2.1 查询时候去注册

 public static void main(String[] args) throws KeeperException {
        try {
//            连接
            ZooKeeper connect = zookeeperConnection.connect("192.168.44.5:2181");
//            注册watch
            connect.getData("/alex",new GetMyWatch(),connect.exists("/alex",false));
//            因为是main方法,使用此方法保证线程不被停止
            System.in.read();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 自定义监听器
     */
    private static  class GetMyWatch implements Watcher{

        @Override
        public void process(WatchedEvent watchedEvent) {
            System.out.println(watchedEvent.getState());
            System.out.println("getData 数据回调");
        }
    }

修改此节点,观察watch是否被调用

技术分享图片

 可以观察到watch 被调用了,但是在这里有一个注意的地方,watch是一次性的,只会被调用一次,你在后面再次修改节点,watch是不会被调用的

 技术分享图片

 

 

  2.3 触发

 

zookeeper之 watch机制

原文:https://www.cnblogs.com/alomsc/p/12836567.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!