dubbo应用之服务引用全流程

一、背景

    本文是基于dubbo3.0进行介绍,主要是介绍业务bean引用过程的主流程,所以并不会非常的具体,比如protocol进行refer操作时候与注册中心进行交互的过程就没有展开,后续作者在有时间的情况下,会对具体的细节进行详细的介绍,如果有哪里写的不对的地方,请留言指正进行交流

在进行主流程之前先要具备几个前提知识:

1、factorybean的用法需要提前了解

2、主流程是一种先缓存,后获取的处理方式

3、dubbo中的invoker是一个执行器对象,底层就是真正的与服务端的交互逻辑

二、主流程

1、第一步是创建invoker,spring容器启动之后发送event,dubbo listener监听启动dubbo容器,开始reference的初始化逻辑

还是dubbo标准的入口

 接下来就是与注册中心交互生成invoker的核心逻辑,当然在这之前有区分本地or远程的逻辑,还有区分远程中是否直连的逻辑,本文中都没有展开 

 2、第二步创建proxy,proxy是对invoker进行了封装

缓存proxy,真正是缓存在了proxiesOfType中,并不是debug的那一行

3、第三步就是获取容器bean的逻辑,这个逻辑很经典,也是经常被问到的,获取bean,得到的却是proxy  

这里的ReferenceBean就是实现了FactoryBean的对象,所以在getBean的时候就会触发getObject的方法 

从缓存中获取proxy对象

到此可见,获取的是proxy对象 

 4、第四步就是proxy——>invoker——>访问服务端的逻辑,中间有很多的invoker的逻辑,比如mock逻辑,cluster容错逻辑,还有filter逻辑都不展开介绍了

最终调用到dubboinvoker,然后底层通过netty与服务方进行通信

三、总结

dubbo消费方的启动过程逻辑是比较清晰的,但是有几点是需要注意的

1、不同dubbo版本的细节处理逻辑有些许不同,需要区别学习,比如ReferenceConfigCache的逻辑,应该是新增加的cache功能;

2、如果要具体的了解启动的每个方面,还是有挺多需要了解的,比如非业务类的启动处理过程、底层通讯的逻辑、协议的设计、序列化的处理等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值