zoukankan      html  css  js  c++  java
  • motan源码解读:注册中心zookeeper(1)

         Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

                     --官网

         从官网可以看出,zookeeper是一个分布式一致性服务的软件。认识它源于hadoop中的habse.在后来的使用过程,可以看出它本省就是一个分布式的内存数据库,它由多个节点组成,每个节点的中存储的内容的都是一样的。,看到这里,每个节点保存内容相同,这样也不怕数据丢失了,读的时候随便从一个节点读取就行,但是如何保证这些节点都是“一样的”的。  这样就需要一个协议,名字叫zab协议。内部咋实现的,这里面不讨论。

          motan利用zookeeper实现发布订阅。其实所谓发布,其实就是创建节点。订阅就是对自己感兴趣的节点设计监听器。显然:

          发布者就是provider:它根据自己URL创建节点。当然consumer也会创建节点。只是前者会被监听,后者不会。

         订阅者就是Consumer:它监听某个节点的变化或者相应的节点的子节点变化了解了provider的情况,同一个provider可能有多个服务器提供,有服务器可能会突然宕机,或者加上一个新的服务器,因此consumer要及时的感受到它对应的服务列表的变化。从而可以根据负载均衡机制或者高可用机制选取一个服务提供者。

    motan中的zookeeper应用(发布订阅)

      源码中示例代码motan-demo中已经存在MotanDemoService这个服务,我也随便创建了一个服务motan.learn的服务实现一个非常简单的功能。下图是zookeper的目录结构和节点的内容。从中可以看到一个服务下会创建对应的server和client的znode.该service的对应的provider和consumer都会创建自己的节点。比如MotanDemoService中有2个服务器提供服务。一个客户端,这个 client会监测相应的server的服务列表。根据已定规则选取一个对应的server

    图1.1 motan-demo中的服务对应的zookeeper结构    

      

                                  

       

      

  • 相关阅读:
    AMF序列化技巧
    为什么用ByteArray序列化的对象如此小?
    解决Asp.net中翻页问题的自定义用户控件
    新建对象:反射会调用构造函数,clone不会调用构造函数
    Java 的传值小例子
    JDK中设计模式
    tryfinally中的返回值
    c++类中的常量(注意)
    创建有个性的对话框之MFC篇(转)
    用VC在IE浏览器的工具条上添加命令按钮(转 可以借鉴)
  • 原文地址:https://www.cnblogs.com/hansongjiang/p/5644890.html
Copyright © 2011-2022 走看看