栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

dubbo应用之服务引用全流程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292328.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号