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的层。 

       

  • 相关阅读:
    js怎么通过逗号将string转换成数组
    设置mysql数据库为只读
    python 关于django 2.X from django.contrib.auth.views import login
    python Django2.X,报错 ‘learning_logs ’is not a registered namespace,如何解决?
    python django2.x报错No module named 'django.core.urlresolvers'
    python Django2.0如何配置urls文件
    VMware vSphere 组件和功能
    VMware vSphere Client的简单使用教程
    python 逻辑运算 ‘and’ ,'or' 在实战中的作用,代替if语句。
    python_urllib2:urlerror和httperror
  • 原文地址:https://www.cnblogs.com/xjz1842/p/10000107.html
Copyright © 2011-2022 走看看