Dubbo框架设计一共划分为10层。而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。
1),服务接口层: 该层是与实际业务逻辑相关的。根据服务提供方和服务消费方的业务设计对应的接口和实现。
2),配置层:对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。
3),服务代理层: 服务接口透明代理,生成服务的客户端Stub和服务端Skeleton, 以ServiceProxy为中心,扩展接口为ProxyFactory。
4),服务注册层:封装服务地址的注册与发现,以服务URL为中心,以Invoker为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服务。
5),集群层:封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance。将多个服务提供方组合为一个服务提供方,实现对服务消费方来透明,只需要与一个服务提供方进行交互。
6),监控层(Monitor):RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor和MonitorService。
7), 远程调用层(Protocol): 封装RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。
8),信息交换层(Exchange):
9),网络传输层(Transport):
10),数据序列化层(Serialize):
在RPC中,Protocol是核心层,也就是只要有Protocol+Invoker+Exporter就可以完成非透明的RPC调用,然后在Invoker的主过程上Filter拦截点。