Zookeeper应用之一:数据发布与订阅初体验

  Zookeeper到底是什么?可以从Zookeeper提供的功能来理解。本篇小作文就是使用其提供的功能之一:数据发布与订阅。

  需求:服务端开启多个实例提供服务,客户端使用服务。如果服务端某个服务下线或者新服务上线,客户端可感知并与客户端断开或者接连服务端。

  分析:利用Zookeeper作为注册中心,服务端进行注册,客户端读取注册信息。

  实现:

    一、服务器端启动时自动将ip/port注册到Zookeeper

      1、注册时点:服务端绑定端口后注册

         

        

       2、注册具体实现:

        

       3、验证:

        启动两个服务端实例,查看Zookeeper节点信息(Zookeeper服务端启动,参考CentOS8系统上Zookeeper安装启动 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)

        1)未启动服务端实例前,Zookeeper节点信息

          

           具体节点信息

          

         2)启动一个服务127.0.0.1:8899,查看节点信息

          

           

         3)启动一个服务127.0.0.1:8989,查看节点信息

           

     二、客户端启动使用浏览器访问服务端时,自动捕获服务实例上下线地同时链接服务器端

      1、仅初始两个服务:8899和8989

        

          

      2、上线一个服务:127.0.0.1:8889

        

         

         

       3、下线一个服务

        

         

         

     以上是客户端结果验证,那么是如何实现的呢?

      分析:客户端访问服务器端,重点是获得服务端的ip:port。如果没有Zookeeper注册中心提供数据的发布(此案例中服务端ip:port作为数据发布到Zookeeper相关节点),那么客户端可能就需要硬编码,如下:

      

      一旦有新的服务实例上线或者某个服务下线,那么就得重新编写代码。如果是生产环境,服务由于某种未知原因下线,那么会直接影响生产运行。

       客户端如何利用Zookeeper实现客户端订阅注册信息数据信息的呢?此案例订阅的事lf_provider节点下所有子节点的数据信息,具体实现如下:

      1、链接Zookeeper服务

        

       2、获取注册中心数据信息(ip:port 列表)

        

       3、新建客户端实例链接所有地址信息建立客户端链接列表

        

       4、实际业务逻辑中随机使用一个客户端链接

        

  以上就是Zookeeper应用之一~数据发布与订阅,在实际业务中解决共享数据的集中管理及动态更新并动态获取数据。

  在以上体验中,用到了Zookeeper提供的API及命令行,后续将分别介绍。

 

      

        

    

posted on 2021-05-28 15:45  池塘里洗澡的鸭子  阅读(189)  评论(0编辑  收藏  举报