Dubbo架构分层总结

news/2024/11/27 8:37:35/

进来闲来无事看了些有关dubbo源码的书籍和《极客时间》何辉老师的课程,由于知识点比较碎,遂以笔记的方式纪录,毕竟好记性不如烂笔头,也希望对感情趣的同学提供点帮助

假设你是个新手开发者,可能只是简单使用过dubbo框架,此时把官网的这个架构图甩在你脸上不知第一反应是什么

由于dubbo中涉及太多的组建与模块,下面以我们常见的开发习惯逐一对各个分层做个梳理

一、Service

public interface DemoServicepublic interface DemoServiceImpl

以上图为例,不论是 demoService还是ServiceImpl,其本身都开发者定义的与业务息息相关的东西,Dubbo 把这样与业务逻辑关联紧密的一层称为服务层,即 Service

二、Config

<dubbo:registry id="" protocol="" /><dubbo:protocol name="dubbo" port="" /><dubbo:provider registry="" />

不论是服务调用者还是提供者,都会存在一些配置相关的数据,比如超时时间、重试此时等等,读过Spring源码的同学看到上面截图应该不会陌生,spring会把标签或注解最终解析成 BeanDifinition对象,Dubbo作为优秀的开源框架自然会借鉴spring的做法,其中 Dubbo 把这样专门存储与读取配置打交道的层次称为配置层,即 Config

三、Proxy

通过facade.jar便能够调用具体的远程服务,这个动作场景我们在java中应该也见过类似的实现,没错便是动态代理,Dubbo 把这种代理接口发起远程调用,或代理接收请求进行实例分发处理的层次,称为服务代理层,即 Proxy

四、Registry

有了 Proxy 但是代理怎么知道调用方的地址呢,于是便有了专门和注册中心打交道的模块以便给服务调用者和提供者实现服务注册与发现,Dubbo 把这一模块称为注册中心层,即 Registry

五、Cluster

有了Registry便能拿到一堆提供者的IP列表,根据配置的负载策略选最终的一个提供者IP,Dubbo 将这种封装多个提供者并承担路由过滤和负载均衡的层次,称为路由层,即 Cluster

六、Monitor

监控各个接口的调用情况,比如某个方法调用成功了多少次,失败了多少次,调用前后所花费的时间是多少,springCloud框架中也有类似的实现

七、Protocol

调用是个复杂的过程,比如调用前和调用后要执行哪些操作,那么封装调用细节,取调用结果,Dubbo 将这种封装调用过程的层次称为远程调用层,即 Protocol

八、Exchange

消费方的业务请求数据最终会封装为 Request、Response 对象,至于拿着 Request 对象是进行同步调用,还是直接转异步调用通过 Future.get 拿结果,那是底层要做的事情, Dubbo 将这种封装请求并根据同步异步模式获取响应结果的层次,称为信息交换层,即 Exchange

九、Transport

当 Request 请求对象准备好了,不管是同步发送,还是异步发送,最终都是需要发送出去的,Dubbo 把这种能将数据通过网络发送至对端服务的层次称为网络传输层,即 Transport

十、Serialize

dubbo的网络通信框架是netty,最终要把对象转成二进制才能往网卡中发送,那么谁来将这些Request、Response 对象翻译成网络中能识别的二进制数据呢,Dubbo 将这种能把对象与二进制进行相互转换的正反序列化的层次称为数据序列化层,即 Serialize

总结


http://www.ppmy.cn/news/483687.html

相关文章

指针和数组--指针和二维数组的关系

指针和二维数组的关系 目录 一、二维数组的行地址和列地址 二、通过二维数组的行指针和列指针来引用二维数组元素 一、二维数组的行地址和列地址 在C语言中&#xff0c;可将一个二维数组看成是由若干个一维数组构成的。例如若有下面的定义&#xff1a; int a[3][4]&#xf…

虚拟机ubuntu18.04及CentOS7安装VMware-tool问题解决

一、centos7 安装VMware-tool工具选项为黑色&#xff1a;https://blog.csdn.net/weixin_45158066/article/details/123268884 打开虚拟机&#xff0c;将VMware-tool系统分区的文件复制到虚拟机文件分区,如/home/huangqifa/VMware-tool 从以上目录打开终端&#xff0c;tar -x…

VUE2后台管理系统--权限管理、按钮管理

1、做法 在项目接手时候想的还是根据花裤衩大佬的方法进行&#xff0c;后端返回异步路由进行加载。后来和后端一起确认并且查阅了其他项目做法后&#xff0c;采用的是所有路由在前端的异步路由中进行对比查找赋值&#xff0c;再通过动态路由添加。 2、思路 在用户进行登录时…

python:使用Scikit-image中的滤波函数对遥感影像做空间滤波(中值,高斯,Sobel,Laplace,Scharr等)

作者:CSDN @ _养乐多_ 本文将介绍使用Scikit-image中的滤波函数对遥感影像做空间滤波的代码。滤波方法包括:中值滤波器,高斯滤波器,Sobel滤波器,Laplace滤波器,Scharr滤波器等。并将原始影像和结果影像绘制成图。 结果如下图所示, 文章目录 一、空间滤波函数详解二、…

ipad吃鸡用什么蓝牙耳机?高性价比无线蓝牙耳机品牌

如今蓝牙耳机品牌泛滥&#xff0c;溢价严重&#xff0c;要如何挑选适合自己的蓝牙耳机呢&#xff1f;有没性价比高&#xff0c;口碑好的蓝牙耳机呢&#xff1f;今天给大家推荐几款性价比高性能好的蓝牙耳机&#xff0c;口碑&#xff0c;使用感受都非常不错。 一、南卡Lite Pro…

如何选一款支持iPadh和拯救者R7000的有线耳机

iPad Air 4 和 最近的几款Pro机型都有type- C接口 拯救者R7000也配有一个type- C口 但是常常发现不是每个type- C耳机都是插上去就能用的 查了一下资料&#xff0c;发现网上很多人都说只有华为送的耳机可以。 但价格感人。。而且还常常缺货 所以&#xff0c;深挖了一番&#xf…

ipad吃鸡用什么耳机好?低延迟性价比高的蓝牙耳机推荐

在科技发展下&#xff0c;我们的生活也变得科技起来&#xff0c;如今也越来越多的人不再选择传统的有线耳机了&#xff0c;而是选择了高大上的蓝牙耳机&#xff0c;不管是运动中听音乐、还是上下班路上&#xff0c;戴上蓝牙耳机更显的方便。那市场上什么牌子的蓝牙耳机好你知道…

最长回文子串

给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 示例 1&#xff1a; 输入: “babad” 输出: “bab” 注意: "aba"也是一个有效答案。 示例 2&#xff1a; 输入: “cbbd” 输出: “bb” class Solution:def longestPalind…