dubbo-原理-服务暴露流程
分析:如何通过dubbo:service来把服务暴露出去。
进入ServiceBean。它实现了两个重要的机制,一个是InitializingBean,当组件创建完对象以后会调用InitializingBean的唯一的方法afterPropertiesSet,也就是在属性设置完以后来回调这个方法。
剩下的标签就不再举例。afterPropertiesSet就是把spring配置文件中dubbo的标签内容保存起来。保存在ServiceBean里面。
再看下一步。
ServiceBean还实现了ApplicationListener<ContextRefreshedEvent>接口,叫应用的***。它监听的事件是ContextRefreshedEvent,当我们ioc容器整个刷新完成,也就是ioc容器里面所有对象都创建完成以后来回调方法onApplicationEvent(ContextRefreshedEvent event)。
接下来,对protocols的分析。
我们可以用dubbo协议,也能用其他协议进行暴露。
这个invoker,执行器。
放行,先进入RegistryProtocol的export方法
一路跟踪:
最终open的是一个netty服务器。
我们要暴露服务,创建服务器,其实就是启动netty服务器,监听20880端口。
放行,dubbo暴露出来,相当于netty服务器在底层启动,20880端口进行监听。
注册提供者。
总结:
1.dubbo底层启动netty服务器,监听20880端口。
2.注册中心注册服务
在暴露服务的时候,要获取到invoker(下图getInvoker()),再用exporter来暴露执行器。Exporter会用两个,dubboExporter和registryExporter。DubboExporter来开启netty服务器,registryExporter用来注册,服务(执行器)和对应的url地址,注册到注册表里。
对源码的分析。