dubbo-服务注册过程源码

dubbo-服务注册源码

今天简单看了一下dubbo基于zk为注册中心的生产者端服务注册过程,最开始跟了一下dubbo启动时候加的注解中的源码,没有发现注册的过程,后来在网上看了别人对这块的解析才找到入口。
简单说一下zk作为dubbo的注册中心,就是服务提供者启动服务的时候去zk创建对应的节点,然后把自己的ip,端口啊什么的放到节点中,然后消费者监听这个节点,所以只要看到相关zk创建节点,其实也就算看个差不多了。
启动dubbo其实也是一个spring应用的启动,看过spring启动流程源码,应该知道在spring的IOC容器初始化所有bean之后会调用finishRefresh()方法,在这个方法里spring发布了contextRefreshedEvent事件,所有监听了这个事件的listener都会执行对应的onApplicationEvent()方法,所以入口在这里了,至于怎么找到的是看了别人的博客,我是想不到的,所以看一下dubbo源码中对该事件的监听情况。如图:

1
我用的dubbo是3.2.0版本,可以看到有很多地方监听了该事件,我是把所有监听该事件的地方都打了断点,这里直接说如图:

在这里插入图片描述
然后就是debug起来一步步的慢慢看着代码,一点点的跟进去,从上面的代码贴图可以看出是要跟到deployer.start()方法里的,所以
3
这里可以看到进到对应的start方法里之后又调用了下面的的方法,然后西面的方法又调用了exportServices()方法,这都没什么说的,跟到exportServiceInternal()这个方法之后会调用其他类的方法了,如图:
在这里插入图片描述
不多说跟过去之后,如图
在这里插入图片描述
这里可以看到最后调用了doExport(),经常看源码的都知道,do开头的方法一般都要看看,因为这是真正干事的地方了,上面的do方法从方法名字可以看个大概是延迟发布这么个意思,不求甚解,继续往下跟
6
在这里插入图片描述
在这里插入图片描述
在ServiceConfig这个类中跟到最后会跳到DubboProtocol中的export()方法中,因为我用的是dubbo协议

在这里插入图片描述
中间还有很多的方法调用,我就不一一贴图了,最后几步会调用到下面这个方法中:
在这里插入图片描述
在这里插入图片描述

这里可以看到调用了zk的客户端来创建节点了,也就基本把服务注册的流程跑下来了。看源码其实我觉得主要有这几个好处,一个呢提高自己看代码的能力,这个挺重要的,有的时候你接手一个项目,可能就需要去看其他人的代码了,再一个能加深自己的印象,不容易忘记吧,其他的你说学习dubbo框架里的一些设计模式啊,一些架构什么的,还没到那个层次,这里面可以看到spring的监听者模式,就被dubbo用上了,通过监听时间完成了服务的注册,包括双重检查锁(DCL),这个过程中也有体现,也可以让自己看到学的其他的知识点在这里体现,发现了也算是个乐趣吧。
后面可能还会看一些dubbo的源码,比如消费者端如何从zk拿到的注册信息,还有一些服务治理方面,负载均衡的实现,链路追踪,路由这些有时间都会看一下源码来加深一下印象。

“是不是一定要有所失,才会有所悟”

参考文献:
https://blog.csdn.net/qq_33375499/article/details/126493744
https://blog.csdn.net/zhoushimiao1990/article/details/117086316

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值