Dubbo的分层架构
Dubbo 分层架构图如下:
Dubbo大的三层分别为 Business(业务层)、RPC 层、Remoting,并且还分为 API 层和 SPI 层。
分为大三层其实就是和我们知道的网络分层一样的意思,只有层次分明,职责边界清晰才能更好的扩展。
而分 API 层和 SPI 层这是 Dubbo 成功的一点,采用微内核设计+SPI扩展,使得有特殊需求的接入方可以自定义扩展,做定制的二次开发。
接下来咱们再来看看每一层都是干嘛的。
-
Service,业务层,就是咱们开发的业务逻辑层。
-
Config,配置层,主要围绕 ServiceConfig 和 ReferenceConfig,初始化配置信息。
-
Proxy,代理层,服务提供者还是消费者都会生成一个代理类,使得服务接口透明化,代理层做远程调用和返回结果。
-
Register,注册层,封装了服务注册和发现。
-
Cluster,路由和集群容错层,负责选取具体调用的节点,处理特殊的调用要求和负责远程调用失败的容错措施。
-
Monitor,监控层,负责监控统计调用时间和次数。
-
Portocol,远程调用层,主要是封装 RPC 调用,主要负责管理 Invoker,Invoker代表一个抽象封装了的执行体,之后再做详解。
-
Exchange,信息交换层,用来封装请求响应模型,同步转异步。
-
Transport,网络传输层,抽象了网络传输的统一接口,这样用户想用 Netty 就用 Netty,想用 Mina 就用 Mina。
-
Serialize,序列化层,将数据序列化成二进制流,当然也做反序列化。