3.1.1 架构分层剖析

(1)Service层

提供服务提供者、服务消费者角色定位的接口与方法,两个角色在某一次通信过程中是确定的,但是在不同的通信过程中,角色是可以互换的。

(2)Config层

提供对外依赖的配置管理,各服务自身的配置管理等功能。

(3)Proxy层

提供服务的代理,服务提供者、服务消费者都会使用代理来通信,让远程调用以及本地调用都可以对用户透明化。

(4)Registry层

提供了服务的注册与发现功能,强大的参数service URL就是在此层构建的。

(5)Cluster层

封装了集群的功能,例如多个服务提供者实例的负载均衡、路由等,对服务消费者来说是透明的,只需要与一个服务提供者通信即可。

(6)Monitor层

提供了RPC调用的次数、执行时间等指标管理与监控功能。

(7)Protocol层

实现了真正的RPC过程,其中Invoker是暴露服务和引用服务的主功能入口,它负责Invoker的生命周期管理。Invoker是Dubbo的核心模型,其他模型都向它靠拢或转换成它。它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现或是一个远程的实现,也可能是一个集群实现。

(8)Exchange层

封装了请求/响应消息、同步/异步转换、调用/交互通信等过程,给用户提供统一视图。

(9)Transport层

抽象了通信消息在传输层面的处理过程,透明化了底层通信框架。

(10)Serialize层

提供了序列化管理方面的功能。