微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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上创建。

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


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐