Dubbo源码分析:Register注册中心

Dubbo源码分析:Register注册中心Registry 每个注册中心对应一个 Registry 实例 包括 dubbo zookeeper redis multicast

大家好,欢迎来到IT知识分享网。

Registry

RegistryFactory

工厂类,负责生成Registry实例,维护Registry实例缓存,根据底层实现技术的不同,分为dubbo,zookeeper,redis,multicast实现。

RegistryProtocol:注册协议

  1. export方法:负责将provider的service注册到注册中心,具体调用了在ServiceConfig中通过ExtensionLoader加载RegistryProtocol。
  2. 注册中心实现选择:包括:zookeeper,redis,dubbo。确定RegistoryFactory的实现:一旦RegistoryFactory实现确定,则Registry就确定了。
  • 根据ExtensionLoader的分析,通过ServiceConfig确定采用的是RegistryProtocol,通过RegistryProtocol的export方法注册service到注册中心。
  • RegistryProtocol通过ExtensionLoader确定RegistryFactory的实现类。
  1. 具体过程
    (1)在RegistryProtocol的export方法调用了getReigstry(originInvoker):
    在这里插入图片描述
    如下:右下角为originInvoker的url的protocol和相关parameters,registry -> zookeeper,所以通过setProtocol设置值为zookeeper,故最终选择的是ZookeeperRegistoryFactory,具体看(2)中RegistryFactory的SPI和@Adaptive规则。
    在这里插入图片描述
    getRegistry的实现:模板设计模式,最终由具体实现类实现createRegistry。
    在这里插入图片描述
    ZookeeperRegistry的定义:
    在这里插入图片描述







package com.alibaba.dubbo.registry; import com.alibaba.dubbo.common.extension.ExtensionLoader; public class RegistryFactory$Adpative implements com.alibaba.dubbo.registry.RegistryFactory { public com.alibaba.dubbo.registry.Registry getRegistry(com.alibaba.dubbo.common.URL arg0) { if (arg0 == null) throw new IllegalArgumentException("url == null"); com.alibaba.dubbo.common.URL url = arg0; String extName = ( url.getProtocol() == null ? "dubbo" : url.getProtocol() ); if(extName == null) throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.registry.RegistryFactory) name from url(" + url.toString() + ") use keys([protocol])"); com.alibaba.dubbo.registry.RegistryFactory extension = (com.alibaba.dubbo.registry.RegistryFactory)ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.registry.RegistryFactory.class).getExtension(extName); return extension.getRegistry(arg0); } } 

RegistryDirectory:消费者订阅监听器

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124547.html

(0)
上一篇 2025-10-06 16:00
下一篇 2025-10-06 16:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信