zoukankan      html  css  js  c++  java
  • Dubbo的服务注册--Zookeeper

        Dubbo源码的版本的2.7.0。

        服务这册中心,dubbo其实实现几种组件,如 multicast, default redis,zookeeper

             

          今天要讲的是zookeeper这个服务注册。下面是dubbo.properties注册中心的配置方式。

           

          这个XML配置的初始化的过程,之前的文章已经详细分析过了,这里就不详细说了, 这里服务注册,最终会调用的RegisterProtocol中的export。

      

          这里会调用registerProtocol中的export函数,主要的逻辑是注册服务到zookeeper, 下面是export的代码。

        

              首先,是调用doLocalExport方法,这个方法是先做本地导出。

       当前类中存ConcurrentHashMap的变量bounds,key就是URL的字符串,值对象是ExporterChangeableWrapper对象,这个对象又封装了 protocol的导出invokerDelegete和originInvoker, 这里Protocol的export方法是

      服务提供者的的url, 导出URL。   

         

          getRegistry方法则是通过扩展机制加载Register,这个实际是ZookeeperRegister,  进行注册到zookooper.,那么接下来看下Zookeeper的

         

         它的核心方法是doRegister,真正向zookeeper创建路径,是zkClient, 这个CuratorZookeeperClient, 也是使用Curator这个客户端的封装实现的,

        

        这里看下create方法,终于看到熟悉的操作zookeeper的节点的创建,例如dubbo://192.168.4.183:20880/org.apache.dubbo.demo.DemoService?anyhost=true&application=demo-provider&dubbo=2.0.2&generic=false&interface=org.apache.dubbo.demo.DemoService&methods=sayHello&pid=89545&side=provider&timestamp=1542779223302

         可以看到dubbo的url是 /之前的,都是创建持久节点,其他的都是创建的是临时节点。

       后面,就是利用 registry调用subscribe函数去订阅zookeeper的状态,这里有兴趣的可以深入看下里面的代码。

          

    总结:

         今天,主要服务注册的过程有个大致的了解。后续会分析服务的Transporter和Exchanger的层。 

       

  • 相关阅读:
    [转]深度理解依赖注入(Dependence Injection)
    [转]控制反转(IOC)和依赖注入(DI)
    [转]依赖注入的概念
    [转]struct实例字段的内存布局(Layout)和大小(Size)
    异步编程模式
    HTTP协议返回代码含义
    [转]StructLayout特性
    Stack的三种含义
    FineUI登入的例子中遇到的一些问题
    编程以外积累: 如何给项目生成类似VS2008的说明文档
  • 原文地址:https://www.cnblogs.com/xjz1842/p/10000107.html
Copyright © 2011-2022 走看看