Dubbo源码剖析二之注册中心
Dubbo基础二之架构及处理流程概述 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中架构中,无论是服务提供者还是服务消费者都离不开注册中心,可见注册中心之重要。Redis、Nacos、Zookeeper等这些开源框架均作为Dubbo的注册中心,Dubbo推荐用户使用Zookeeper作为注册中心。
之前文章案例也均使用Zookeeper作为注册中心,所以本文研究注册中心,也就研究Dubbo如何整合Zookeeper并使用。对于Zookeeper,可参考Zookeeper - 随笔分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)。
Dubbo本身是使用Zookeeper的业务应用系统,所以从建设应用系统的角度研究注册中心。
注册之前,Dubbo必需与Zookeeper服务器建立链接,Dubbo中使用开源客户端Curator。调试可以发现Dubbo链接到Zookeeper使用的是扩展点机制(参考DubboSPI机制二之Dubbo中SPI初体验 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)):
所以参考Curator链接Zookeeper的文章即可Zookeeper开源客户端Curator之创建会话 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)。在Dubbo中具体链接源码如下:
链接成功后进行注册,可以看到注册后Zookeeper的的目录结构,如下:
1)从图示可知所有的目录都在dubbo层级下
2)dubbo根结点下面是当前所拥有的接口名称、如果有多个接口则会以多个子节点的形式展开
3)每个服务下面又分别有四个配置
4)dubbo基本上是通过URL的形式进行交互获取数据的,在URL中也会保存很多信息。
提供者会在providers目录下对自身进行注册。
消费者会在consumers目录下进行自身注册并监听providers目录,以此通过监听提供者增加或者减少实现服务发现
监控器会对整个服务级别进行监听,用来获取整体服务情况。并通过此操作更多的对整体情况做监听。