Dubbo设计原理
-
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。
启动加载
找到BeanDefinitionParser
这个是spring工厂提供的解析XML和注解的全局接口,只要实现了这个接口的配置,那么在XML里面定义的标签就可以被解析。
public interface BeanDefinitionParser {
@Nullable
BeanDefinition parse(Element var1, ParserContext var2);
}
DubboBeanDefinitionParser实现了这个接口,是用于来解析配置里面的信息。
在DubboBeanDefinitionParser构造方法的前面执行了DubboNamespaceHandler。
评论区