整体上看,Dubbo框架作服务暴露分为两部分,第一步,将持有的服务实例通过代理转化成Invoker,第二步会把invoker通过具体的协议转化成Exporter,框架做了这层抽象也大大方便了扩展。
Dubbo支持多注册中心同时写,如果配置了多个注册中心,则会在ServiceConfig#doExportUrls中依次暴露
private void doExportUrls(){
//获取当前服务对应的注册中心实例
List<URL> registryURLs = loadRegistries(true);
for(Protocolconfig protocolConfig : protocols){
doExportUrlsFor1Protocol(protocolConfig,registryURLs);
}
}