第四章 Dubbo的系统架构解析

以下内容均来自,开课吧老雷,感谢老雷

第一章Dubbo概述 https://blog.csdn.net/gqs2019/article/details/115366306
第二章 Dubbo系统框架搭建 https://blog.csdn.net/gqs2019/article/details/115370178
第三章 Dubbo高级配置 https://blog.csdn.net/gqs2019/article/details/115403364
第四章 Dubbo的系统架构解析 https://blog.csdn.net/gqs2019/article/details/115456656
第五章Dubbo 的内核解析 https://blog.csdn.net/gqs2019/article/details/115457046
第六章 Dubbo的源码解析 https://blog.csdn.net/gqs2019/article/details/115460065

一、Dubbo的两大设计原则

Double 框架在设计时遵循了两大设计原则:

  1. Dubbo 使用“微内核+插件”的设计模式。内核只负责组装插件(扩展点),Dubbo 的功能
    都是由插件实现的,也就是 Dubbo 的所有功能点都可被用户自定义扩展类所替换。
  2. 采用 URL 作为配置信息的统一格式,所有扩展点都通过传递 URL 携带配置信息。

二、三大领域模型

为了对 Dubbo 整体架构叙述的方便,Dubbo 抽象出了三大领域模型。

  1. Protocol 服务域:是 Invoker 暴露和引用的主功能入口,它负责 Invoker 的生命周期管
    理。
  2. Invoker 实体域:是 Dubbo 的核心模型,其它模型都向它靠扰,或转换成它,它代表
    一个可执行体,可向它发起 invoke 调用,它有可能是一个本地的实现,也可能是一个
    远程的实现,也可能一个集群实现。
  3. Invocation 会话域:它持有调用过程中的变量,比如方法名,参数等。

三、四大组件

在这里插入图片描述
Dubbo 中存在四大组件:

  1. Provider:暴露服务方,亦称为服务提供者。
  2. Consumer:调用远程服务方,亦称为服务消费者。
  3. Registry:服务注册与发现的中心,提供目录服务,亦称为服务注册中心
  4. Monitor:统计服务的调用次数、调用时间等信息的日志服务,亦称为服务监控中心

二、十层架构

在这里插入图片描述
Dubbo 的架构设计划分为了 10 层。图中左边淡蓝色背景为服务 Consumer 使用的接口,
右边淡绿色背景为服务 Provider 使用的接口,位于中轴线的为双方都要用到的接口。对于这
10 层,根据其总体功能划分,可以划分为三大层:

1.Business 层

该层仅包含一个 service 服务层,该层与实际业务逻辑有关,根据服务消费方和服务提
供方的业务设计,实现对应的接口。

2.PRC层

该层主要负责整个分布式系统中各个主机间的通讯。该层包含了以下 6 层。
(1) config 配置层
以 ServiceConfig 和 ReferenceConfig 为中心,用于加载并解析 Spring 配置文件中的 Dubbo标签。
(2) proxy 服务代理层
服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为
中心,扩展接口为 ProxyFactory。
Proxy 层封装了所有接口的透明化代理,而在其它层都以 Invoker 为中心,只有到了暴
露给用户使用时,才用 Proxy 将 Invoker 转成接口,或将接口实现转成 Invoker,也就是去
掉 Proxy 层 RPC 是可以运行的,只是不那么透明,不那么看起来像调本地服务一样调远程
服务。
(3) registry 注册中心层
封装服务地址的注册和发现,以服务 URL 为中心,扩展接口为 RegistryFactory、Registry、
RegistryService,可能没有服务注册中心,此时服务提供方直接暴露服务。
(4) cluster 路由层
封装多个提供者的路由和负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为
Cluster、Directory、Router 和 LoadBalance,将多个服务提供方组合为一个服务提供方,实现
对服务消费通明。只需要与一个服务提供方进行交互。
Dubbo 官方指出,在 Dubbo 的整体架构中,Cluster 只是一个外围概念。Cluster 的目的
是将多个 Invoker 伪装成一个 Invoker,这样用户只需关注 Protocol 层 Invoker 即可,加上
Cluster 或者去掉 Cluster 对其它层都不会造成影响,因为只有一个提供者时,是不需要
Cluster 的。
(5) monitor 监控层
RPC 调用时间和次数监控,以 Statistics 为中心,扩展接口 MonitorFactory、Monitor 和
MonitorService。
(6) protocol 远程调用层
封装 RPC 调用,以 Invocation 和 Result 为中心,扩展接口为 Protocol、Invoker 和 Exporter。
Protocol 是服务域,它是 Invoker 暴露和引用的主功能入口,它负责 Invoker 的生命周期管理。
Invoker 是实体域,它是 Dubbo 的核心模型,其他模型都是向它靠拢,或转换成它,它代表
一个可执行体,可向它发起 Invoker 调用,它有可能是一个本地实现,也有可能是一个远程
实现,也有可能是一个集群实现。
在 RPC 中,Protocol 是核心层,也就是只要有 Protocol + Invoker + Exporter 就可以完
成非透明的 RPC 调用,然后在 Invoker 的主过程上 Filter 拦截点。

3.Remotting 层

Remoting 实现是 Dubbo 协议的实现,如果我们选择 RMI 协议,整个 Remoting 都不
会用上,Remoting 内部再划为 Transport 传输层和 Exchange 信息交换层,Transport 层只
负责单向消息传输,是对 Mina, Netty, Grizzly 的抽象,它也可以扩展 UDP 传输,而 Exchange
层是在传输层之上封装了 Request-Response 语义。
具体包含以下三层:
(1) exchange 信息交换层
封装请求响应模式,同步转异步,以 Request 和 Response 为中心,扩展接口为 Exchanger
和 ExchangeChannel,ExchangeClient 和 ExchangeServer。
(2) transport 网络传输层
抽象和 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel、Transporter、
Client、Server 和 Codec。
(3) serialize 数据序列化层
可复用的一些工具,扩展接口为 Serialization、ObjectInput、ObejctOutput 和 ThreadPool。

二、框架架构

将 Dubbo 源码工程导入 Idea
本例以 Dubbo2.7.3 为例进行源码解析。从官网下载到源码的 zip 包后解压后就可以直接
导入到 Idea 中。
Dubbo2.7 版本与 2.6 版本
Dubbo2.7 版本需要 Java 8 及以上版本。
2.7.0 版本在改造的过程中遵循了一个原则,即保持与低版本的兼容性,因此从功能层
面来说它是与 2.6.x 及更低版本完全兼容的。2.7 与 2.6 版本相比,改动最大的就是包名,由
原来的 com.alibaba.dubbo 改为了 org.apache.dubbo。

以下内容均来自,开课吧老雷,感谢老雷
第一章Dubbo概述 https://blog.csdn.net/gqs2019/article/details/115366306
第二章 Dubbo系统框架搭建 https://blog.csdn.net/gqs2019/article/details/115370178
第三章 Dubbo高级配置 https://blog.csdn.net/gqs2019/article/details/115403364
第四章 Dubbo的系统架构解析 https://blog.csdn.net/gqs2019/article/details/115456656
第五章Dubbo 的内核解析 https://blog.csdn.net/gqs2019/article/details/115457046
第六章 Dubbo的源码解析 https://blog.csdn.net/gqs2019/article/details/115460065

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值