dubbo系列--服务注册源码分析

  1. 这一步是把//registry:192.168...替换成//zookeeper:192.168....

  2. 由于我们的url=//zookeeper....。所以通过自适应扩展类的方法可以得出

    registryFactory==RegistryFactory$Adaptive,-----ZookeeperRegistryFactory

再进入ZookeeperRegistryFactory的getRegistry()。进入后发现他并没有这个方法,那么我们只好往上找


锁定注册中心获取过程,保证注册中心单一实例,在看createRegistry方法


这里使用了设计模式:模板方法模式。具体实现由子类去实现,那么这里就应该去ZookeeperRegistFactory中去实现的


这里面调用的事ZookeeperRegistry的构造方法,那我们进去看看

这里去链接zookeeper,其中connect方式由两种

扫描二维码关注公众号,回复: 12118985 查看本文章


原生态的zookeeper链接ZkClient


另外一种是CuratorFramework


连接后启动监听

返回的事一个ZookeeperRegisty对象


然后从originInvoker中拿到url。然后调用ZookeeperRegistry的registry()方法

但是其中还是没有此方法,那说明也是在父类中,就在FailbackRegistry中


这里有个doRegistry()方法,这个方法从设计领域来讲,不可能也在这个类中实现,所以也是模板方法模式,也就是在子类中实现doRegistry()方法具体内容。

并且在这个FailbackRegistry类中还定义了其他的由子类自己去实现的方法


由于前面已经做了调用的事ZookeeperRegistry中的registry(),那么这个doRegistry()方法的实现就是应该在这个类里面。


这里就是zookeeper的创建节点,把我们的url地址在zookeeper上创建。

到这里服务注册到注册中心就完毕了。


猜你喜欢

转载自blog.51cto.com/10983206/2564046