写点什么

Dubbo 源码解析 (1)- 整体框架介绍

用户头像
冰三郎
关注
发布于: 2021 年 01 月 21 日

一、前言

借助官网的图片进行讲解:

如上图所示,Dubbo 逻辑上分为 10 层,每层的含义如下:

  • 【1】service 层 :service 是围绕 Interface 展开的,服务的消费者和服务提供方之间的交互是面向接口的,是直接面向使用者的。例如通过 xml 配置服务提供者和消费者的例子:

服务提供者:

<!-- 声明需要暴露的服务接口 --><dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService" />
复制代码

服务消费者:

<!-- 生成远程服务代理,可以和本地bean一样使用demoService --><dubbo:reference id="demoService" interface="org.apache.dubbo.demo.DemoService" />
复制代码


  • 【2】config 配置层:对外配置接口,以 ServiceConfigReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类,具体的配置方式如下:

  1. XML 配置。如上面所示,可以通过 xml 的方式配置。

  2. 属性配置。如果程序可以通过 dubbo.properties

  3. 注解配置。

  4. API 配置。

  • 【3】proxy 服务代理层:服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为中心,扩展接口为 ProxyFactory

  • 【4】registry 注册中心层:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactoryRegistryRegistryService

  • 【5】cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 ClusterDirectoryRouterLoadBalance

  • 【6】monitor 监控层:RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactoryMonitorMonitorService

  • 【7】protocol 远程调用层:封装 RPC 调用,以 InvocationResult 为中心,扩展接口为 ProtocolInvokerExporter

  • 【8】exchange 信息交换层:封装请求响应模式,同步转异步,以 RequestResponse 为中心,扩展接口为 ExchangerExchangeChannelExchangeClientExchangeServer

  • 【9】transport 网络传输层:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 ChannelTransporterClientServerCodec

  • 【10】serialize 数据序列化层:可复用的一些工具,扩展接口为 SerializationObjectInputObjectOutputThreadPool


发布于: 2021 年 01 月 21 日阅读数: 48
用户头像

冰三郎

关注

还未添加个人签名 2019.10.27 加入

还未添加个人简介

评论

发布
暂无评论
Dubbo源码解析(1)-整体框架介绍