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

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

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

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

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


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


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


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

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


原生态的zookeeper链接ZkClient


另外一种是CuratorFramework


连接后启动监听

返回的事一个ZookeeperRegisty对象


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

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


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

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


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


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

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


相关文章

在网络请求时,总会有各种异常情况出现,我们需要提前处理这...
作者:宇曾背景软件技术的发展历史,从单体的应用,逐渐演进...
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我...
 一个软件开发人员,工作到了一定的年限(一般是3、4年左右...
当一个服务调用另一个远程服务出现错误时的外观Dubbo提供了多...
最近在看阿里开源RPC框架Dubbo的源码,顺带梳理了一下其中用...