dubbo-原理-服务暴露流程

分析:如何通过dubbo:service来把服务暴露出去。

dubbo-原理-服务暴露流程_第1张图片

进入ServiceBean。它实现了两个重要的机制,一个是InitializingBean,当组件创建完对象以后会调用InitializingBean的唯一的方法afterPropertiesSet,也就是在属性设置完以后来回调这个方法。

dubbo-原理-服务暴露流程_第2张图片

dubbo-原理-服务暴露流程_第3张图片

dubbo-原理-服务暴露流程_第4张图片

dubbo-原理-服务暴露流程_第5张图片

剩下的标签就不再举例。afterPropertiesSet就是把spring配置文件中dubbo的标签内容保存起来。保存在ServiceBean里面。

再看下一步。

ServiceBean还实现了ApplicationListener接口,叫应用的监听器。它监听的事件是ContextRefreshedEvent,当我们ioc容器整个刷新完成,也就是ioc容器里面所有对象都创建完成以后来回调方法onApplicationEvent(ContextRefreshedEvent event)。

dubbo-原理-服务暴露流程_第6张图片

dubbo-原理-服务暴露流程_第7张图片

 

dubbo-原理-服务暴露流程_第8张图片

dubbo-原理-服务暴露流程_第9张图片

dubbo-原理-服务暴露流程_第10张图片 

 

接下来,对protocols的分析。

dubbo-原理-服务暴露流程_第11张图片

我们可以用dubbo协议,也能用其他协议进行暴露。

dubbo-原理-服务暴露流程_第12张图片

这个invoker,执行器。

放行,先进入RegistryProtocol的export方法

dubbo-原理-服务暴露流程_第13张图片

dubbo-原理-服务暴露流程_第14张图片 

一路跟踪:

dubbo-原理-服务暴露流程_第15张图片

最终open的是一个netty服务器。

我们要暴露服务,创建服务器,其实就是启动netty服务器,监听20880端口。

放行,dubbo暴露出来,相当于netty服务器在底层启动,20880端口进行监听。

dubbo-原理-服务暴露流程_第16张图片

注册提供者。

dubbo-原理-服务暴露流程_第17张图片

总结:

1.dubbo底层启动netty服务器,监听20880端口。

2.注册中心注册服务

 

在暴露服务的时候,要获取到invoker(下图getInvoker()),再用exporter来暴露执行器。Exporter会用两个,dubboExporter和registryExporter。DubboExporter来开启netty服务器,registryExporter用来注册,服务(执行器)和对应的url地址,注册到注册表里。

对源码的分析。

dubbo-原理-服务暴露流程_第18张图片

 
 

你可能感兴趣的:(分布式中间件)