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】协议,转载请保留原文出处及本版权声明。
评论