标签:Dubbo 服务 URL 暴露 export Invoker
一、URL
在说Dobbu之前我们先来讲一下URL,为什么要提URL呢?
一般而言我们说的 URL 指的就是统一资源定位符,在网络上一般指代地址,本质上看其实就是一串包含特殊格式的字符串,标准格式如下:
https://www.linzhuotech.com/Product/download?value=lz
而Dubbo就是采用URL的方式作为约定参数类型,也可以理解为Provider和Consumer沟通的枢纽。如果没有这个标准,那么不同的接口就会以不同的参数来传递信息,而且通过统一的契约之后,代码会显得更加的规范。
二、服务暴露过程
1、执行过程
第一步:检测Dubbo配置,如果配置为空则会默认创建,并组装成URL。
第二步:暴露服务,Provider将服务暴露给本地服务和远程的服务。
第三步:将Provider服务提交至注册中心。
2、对象创建过程
第一步:Dubbo将服务实现类转换成Invoker。
第二步:将Invoker转换成Exporter。
三、源码分析
1、在初始化过程中service定义
这里实现了ApplicationListener,所以就会在SpringIOC容器刷新完成后调用onApplicationEvent()方法,这个方法里面做的就是服务暴露,也是服务的启动点。接着通过调用export方法完成暴露过程。
而Dubbo支持多注册中心,并且支持多个协议,一个服务如果有多个协议那么就都需要暴露。因此需要将多个协议分别向多个注册中心暴露注册,这里我们看一下doExportUrls方法具体实现。
2、封装成invoker
至于为什么要封装成invoker其实就是想屏蔽调用的细节,统一暴露出一个可执行体。
然后我们看下export是什么样子。如下图,export方法是标注了@Adaptive注解的,因此会生成代理类,然后代理类会根据Invoker里面的URL参数得知具体的协议,然后通过Dubbo SPI机制选择对应的实现类进行export。
对于完整流程我们可以看一下官网的时序图。
标签:Dubbo,服务,URL,暴露,export,Invoker 来源: https://blog.csdn.net/xDroid_linzhuo/article/details/117254033
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。