Dubbo架构层次

来源:互联网 发布:信息管理与网络维护 编辑:程序博客网 时间:2024/06/07 03:14

Dubbo的总体架构如图所示:


Dubbo的架构设计共分为了10层。最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝色背景为服务消费方使用的接口,右边淡绿色背景为服务提供方使用的接口,位于中轴线的为双方都要用到的接口。结合Dubbo官网,总结如下:

1.服务接口层:该层与实际业务逻辑有关,根据服务消费方和服务提供方的业务设计,实现对应的接口。

2.配置层:对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以根据spring解析配置生成配置类。

3.服务注册层:封装服务地址的注册和发现,以服务URL为中心,扩展接口为RegistryFactory、Registry、RegistryService,可能没有服务注册中心,此时服务提供方直接暴露服务。

4.服务代理层:服务接口通明代理,生成服务的客户端Stub和服务端Skeleton,以ServiceProxy为中心,扩展接口ProxyFactory。

5.集群层:封装多个提供者的路由和负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance,将多个服务提供方组合为 一个服务提供方,实现对服务消费通明。只需要与一个服务提供方进行交互。

6.监控层:RPC调用时间和次数监控,以Statistics为中心,扩展接口MonitorFactory、Monitor和MonitorService。

7.远程调用层:封装RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其他模型都是向它靠拢,或转换成它,它代表一个可执行体,可向它发起Invoker调用,它有可能是一个本地实现,也有可能是一个远程实现,也有可能是一个集群实现。

8.信息交换层:封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger和ExchangeChannel,ExchangeClient和ExchangeServer。

9.网络传输层:抽象和mina和netty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server和Codec。

10.数据序列化层:可复用的一些工具,扩展接口为Serialization、ObjectInput,ObejctOutput和ThreadPool。

0 0