Zookeeper实现注册与发现


1.Zookeeper的数据模型

      (1) Zookeeper的数据模型,类似于树形结构:

                                        

     (2) Zookeeper的每一个节点成为称为Znode,主要用来存储数据。

           

  1. data : 存储数据信息。
  2. acl   : 记录Znode的访问权限。
  3. child : 当前节点的子节点引用。
  4. stat :包含Znode的各种元数据,事物Id,版本号等。 

     (3) Znode的引用方式是路径引用,例如:

           /core/UserCoreService

2.Zookeeper的事件通知

      Watch相当于注册在特定Znode上的触发器,当该Znode中执行写操作时,服务端会异步通知客户端。

      具体的交互过程:

  • 客户端调用 getData() 方法,watch参数是true。服务器接收到请求,返回节点数据,并且在对应的哈希表里插入被 Watch的Znode路径,以及Watcher列表。
  • 当被Watch的Znode已删除,服务端会查找哈希表,找到该Znode对应的所有Watcher,异步通知客户端,并且删除哈希表中对应的key-value;

3.实现注册与发现

      (1)注册

            提供者将自身信息(ip,port,权重等)注册到zookeeper上。zookeeper为其创建一个Znode,该节点的data中保存提供者的信息。

      (2)发现

            消费者根据路径参数去zookeeper中getData()自己需要调用的提供者信息,将服务注册信息缓存到本地。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM