dubbo服务注册源码分析

PS:dubbo启动需要注册中心,提供一个个人云zk地址:159.75.49.126:2181,还有其他组件,redis、kafka、mysql,端口是默认端口。

其实dubbo官网文档已经是比较清晰了,以下两张图,基本是核心思路。


image.png

image.png

dubbo服务生产者服务注册流程,版本:3.0.10

a、注册流程大致调用栈

// 一般dubbo依赖spring启动,spring启动流程不清楚的要另外看下
org.springframework.context.support.AbstractApplicationContext#finishRefresh
// spring事件发布
org.springframework.context.support.AbstractApplicationContext#publishEvent(org.springframework.context.ApplicationEvent)
// dubbo实现的监听器接口
org.apache.dubbo.config.spring.context.DubboDeployApplicationListener#onApplicationEvent
// 启动dubbo部署
org.apache.dubbo.config.deploy.DefaultModuleDeployer#start
// 发布dubbo接口到注册中心
org.apache.dubbo.config.ServiceConfig#export
// 这里就是主要的发布逻辑了
org.apache.dubbo.registry.integration.RegistryProtocol#export
// 将服务注册到注册中心
org.apache.dubbo.registry.support.FailbackRegistry#register

b、消费者向注册中心注册监听器,以及注册中心回调消费者过程,以zk为例

// 消费者发布接口到zk
org.apache.dubbo.registry.integration.RegistryProtocol#export
// dubbo客户端注册zk watcher监听
org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#doSubscribe
// 会调到zk提供的注册监听api
org.apache.zookeeper.ZooKeeper#getData(java.lang.String, org.apache.zookeeper.Watcher, org.apache.zookeeper.data.Stat) 

// 当zk节点发生修改时
org.apache.zookeeper.server.DataTree#setData
// 触发zk节点事件监听
org.apache.zookeeper.server.watch.WatchManager#triggerWatch(java.lang.String, org.apache.zookeeper.Watcher.Event.EventType, org.apache.zookeeper.server.watch.WatcherOrBitSet) 
// 发送节点事件给消费者客户端
org.apache.zookeeper.server.NIOServerCnxn#process 
// 消费者客户端接收到节点修改事件通知
org.apache.zookeeper.ClientCnxn.SendThread#readResponse  
// 消费者客户端将通知放入等待事件队列
org.apache.zookeeper.ClientCnxn.EventThread#queueEvent(org.apache.zookeeper.WatchedEvent, java.util.Set<org.apache.zookeeper.Watcher>) 
// 消费者客户端线程消费等待事件队列
org.apache.zookeeper.ClientCnxn.EventThread#run  
// 消费者客户端处理节点变更事件,这个就是回调前面注册的监听器
org.apache.zookeeper.ClientCnxn.EventThread#processEvent
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容