美文网首页
dubbo服务暴露简述

dubbo服务暴露简述

作者: 越陌先生 | 来源:发表于2021-01-06 17:18 被阅读0次

dubbo服务暴露分为两部分
1 服务实例通过动态代理转化成Invoker
2 Invoker 通过具体的协议(dubbo,rest,injvm等) 转化成exporter
如下图所示

image.png

1 暴露的入口方法 ServiceConfig.doExportUrlsFor1Protocol


image.png

其中protocolConfig 是dubbo要暴露的服务的配置参数
registryURLs 是要配置到远程注册中心信息
2 根据scope参数判断是 本地还是远程暴露 执行不同的方法


image.png
3 代理工厂获取Invoker 及根据Protocol根据Invoker参数暴露服务
image.png

4 Protocol实例使用了责任链的设计模式 会依次调用下面各类的export方法


image.png

从而为服务的暴露增加了过滤器和监听器。下面看看如何实现的:
1 ServiceConfig 中 PROTOCOL获取实例


image.png

追踪getAdaptiveExtension 方法到 createAdaptiveExtensionClass
再到 AdaptiveCompiler.compile 方法


image.png
最后到 ExtensionLoader.createExtension 的下面方法
image.png
cachedWrapperClasses 对象里装着就是以父接口Protocol为构造函数参数的对象,包装类 ProtocolFilterWrapper 和 ProtocolListenerWrapper 这两个类都有 @Activate(order =)注解 用来排序使用
image.png

最后暴露的对象实际为:


image.png

ProtocolFilterWrapper 的责任链模式实现代码


image.png

相关文章

网友评论

      本文标题:dubbo服务暴露简述

      本文链接:https://www.haomeiwen.com/subject/bifooktx.html