架构分层
Dubbo中的架构设计是⾮常优秀的,分为了很多层次,并且每层都是可以扩展的,⽐如:
- Proxy服务代理层,⽀持JDK动态代理、javassist等代理机制
-
Registry
注册中⼼层,⽀持Zookeeper、Redis等作为注册中⼼
-
Protocol
远程调⽤层,
⽀持Dubbo、Http等调⽤协议
-
Transport
⽹络传输层,
⽀持netty、mina等⽹络传输框架
-
Serialize
数据序列化层,⽀持JSON、Hessian等序列化机制
各层说明
-
config 配置层:对外配置接⼝,以 ServiceConfig
,
ReferenceConfig
为中⼼,可以直接
初始化配置类,也可以通过 spring 解析配置⽣成配置类
-
proxy 服务代理层:服务接⼝透明代理,⽣成服务的客户端 Stub 和服务器端 Skeleton, 以
ServiceProxy
为中⼼,扩展接⼝为
ProxyFactory
-
registry 注册中⼼层:封装服务地址的注册与发现,以服务 URL 为中⼼,扩展接⼝为
RegistryFactory
,
Registry
,
RegistryService
-
cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中⼼,以
Invoker
为中⼼,扩展接⼝为 Cluster
,
Directory
,
Router
,
LoadBalance
-
monitor 监控层:RPC 调⽤次数和调⽤时间监控,以
Statistics
为中⼼,扩展接⼝为
MonitorFactory
,
Monitor
,
MonitorService
-
protocol 远程调⽤层:封装 RPC 调⽤,以
Invocation
,
Result
为中⼼,扩展接⼝为
Protocol
,
Invoker
,
Exporter
-
exchange 信息交换层:封装请求响应模式,同步转异步,以
Request
,
Response
为中⼼,
扩展接⼝为
Exchanger
,
ExchangeChannel
,
ExchangeClient
,
ExchangeServer
-
transport ⽹络传输层:抽象 mina 和 netty 为统⼀接⼝,以
Message
为中⼼,扩展接⼝为
Channel
,
Transporter
,
Client
,
Server
,
Codec
-
serialize 数据序列化层:可复⽤的⼀些⼯具,扩展接⼝为
Serialization
,
ObjectInput
,
ObjectOutput
,
ThreadPool