dubbo源码详解系列文章目录
-
第一章 dubbo启动引导过程
-
第二章 dobbo服务暴露过程
2.1 dubbo服务暴露过程之config层
2.2 dubbo服务暴露过程之protocol层
前言
dubbo服务暴露过程,是一个非常有趣的过程,也是非常复杂,并且含有诸多配置,如果放在一篇中讲完,肯定也是不现实的,也不利于阅读,因此,我会按照dubbo框架的架构分层来给大家讲讲我的理解,希望这样可以更清新的带着大家一起探索dubbo源码的世界。
此篇文章是我系列文章的第二篇《dubbo服务暴露过程之config层,主要是我对dubbo服务暴露config层的理解。
使用
要了解dubbo服务的暴露过程,我们首先得知道dubbo服务的使用吧,或者,我们让dubbo暴露服务,它最终能达到什么效果。好吧,你可能觉得这部分是废话,不过我们要渐入佳境嘛,毕竟前戏也很重要。
这里我们就以xml配置的方式,来看下服务暴露的过程。不要觉得xml配置的方式土嘛,农村包围城市,咱们先从土的方式开始。
首先,我这里要补充一下,就是dubbo服务端才需要暴露服务,服务端称之为provider,那么我们要想暴露服务,就要配置provider。好啦,我们看一下provider的配置xml吧
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application metadata-type="remote" name="demo-provider"/>
<dubbo:metadata-report address="zookeeper://127.0.0.1:32782"/>
<dubbo:config-center address="zookeeper://127.0.0.1:32782"/>
<dubbo:registry address="zookeeper://127.0.0.1:32782"/>
<dubbo:protocol name="dubbo"/>
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
</beans>
dubbo服务启动的前置条件,如果有小伙伴启动不起来赌博的话,请参考上一篇文章,或者自行百度,这里就不做赘述了,我们把重点放在<dubbo:protocol/>
这个标签上。我们以暴露dubbo协议为例子,我们先将上面的配置修改为
.....
<dubbo:protocol name="dubbo" port="3000"/>
<dubbo:protocol name="dubbo" port="3001"/>
<dubbo:protocol name="dubbo" port="3002"/>
.....
</beans>
聪明的小伙伴告诉我这个配置会有什么结果?对,会暴露三次我们的demoService,不信?我给你看dubbo-admin的显示
看到没,现在就相当于我们有三个provider了。
阿哈,如果我们配置了其他的协议去暴露,同样也是会按照我们预期给暴露出来,这里我就不展示了,还有很多配置项,大家可以去官网瞅瞅。
现在我们看到了现象,接着咱就开始探索原理呗。
源码解析
不知道小伙伴们有没有这种感觉,就是看这种大型项目的源码,看着看着就不知道看到哪里,所以呢,我们现在不要纠结太多细节,跟我我去看主干,