Dubbo 源码解析 (1)- 整体框架介绍
一、前言
借助官网的图片进行讲解:
如上图所示,Dubbo 逻辑上分为 10 层,每层的含义如下:
【1】service 层 :service 是围绕 Interface 展开的,服务的消费者和服务提供方之间的交互是面向接口的,是直接面向使用者的。例如通过 xml 配置服务提供者和消费者的例子:
服务提供者:
服务消费者:
【2】config 配置层:对外配置接口,以
ServiceConfig,ReferenceConfig为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类,具体的配置方式如下:
XML 配置。如上面所示,可以通过 xml 的方式配置。
属性配置。如果程序可以通过 dubbo.properties
注解配置。
API 配置。
【3】proxy 服务代理层:服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以
ServiceProxy为中心,扩展接口为ProxyFactory【4】registry 注册中心层:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为
RegistryFactory,Registry,RegistryService【5】cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以
Invoker为中心,扩展接口为Cluster,Directory,Router,LoadBalance【6】monitor 监控层:RPC 调用次数和调用时间监控,以
Statistics为中心,扩展接口为MonitorFactory,Monitor,MonitorService【7】protocol 远程调用层:封装 RPC 调用,以
Invocation,Result为中心,扩展接口为Protocol,Invoker,Exporter【8】exchange 信息交换层:封装请求响应模式,同步转异步,以
Request,Response为中心,扩展接口为Exchanger,ExchangeChannel,ExchangeClient,ExchangeServer【9】transport 网络传输层:抽象 mina 和 netty 为统一接口,以
Message为中心,扩展接口为Channel,Transporter,Client,Server,Codec【10】serialize 数据序列化层:可复用的一些工具,扩展接口为
Serialization,ObjectInput,ObjectOutput,ThreadPool
版权声明: 本文为 InfoQ 作者【冰三郎】的原创文章。
原文链接:【http://xie.infoq.cn/article/d43ceef27b3eca4070260ba95】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。











评论