本篇介绍一下Dubbo源码中各package的功能
这张图是Dubbo官网的模块图
dubbo-common模块
dubbo-common 包括公共的工具类和通用模型。
从dubbo-common模块中的包名,就可以看出每个包的具体功能,这里不再展开了。
在后面分析其他源码的时候,会对涉及到的工具类进行要简要说明。
dubbo-registry模块
dubbo-registry 注册中心模块是对各种注册中心的抽象。
如上图所示,dubbo-registry 模块中有很多子模块。dubbo-registry-api 模块这个模块比较重要,抽象了服务的注册中心,其中实现了一些公共的行为,实现模块只需要针对特定的服务发现组件,实现特定的行为即可,这是典型的“模板方法”模式。
dubbo-registry 模块中其余的子模块都是 dubbo-registry-api 模块的实现。每个子模块涉及到的服务发现组件,通过模块名就能看出来。例如,dubbo-registry-zookeeper 模块是针对 Zookeeper 的实现,dubbo-registry-etcd3 模块是针对etcd的实现。
dubbo-rpc模块
dubbo-rpc模块是对各种协议的抽象,并且提供了动态代理的能力。rpc模块只关心只包含一对一的调用,而不关心集群的管理。
dubbo-rpc-api 模块是对各个协议的公共行为以及动态的抽象。
其他模块继承了 dubbo-rpc-api 模块,并针对具体协议进行了实现。
dubbo-remotiing模块
dubbo-remoting 模块是相当于 rpc 协议的底层实现。
dubbo-remoting-api 模块同样是一层抽象,其他模块继承了它,并依赖不同RPC框架进行实现。
dubbo-cluster 模块
dubbo-cluster 模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 容错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-cluster 集群模块
dubbo-config 模块
dubbo-config 模块:是 Dubbo 对外的 API,用户通过 Config 使用Dubbo,隐藏 Dubbo 所有细节。
dubbo-container 模块
dubbo-container 模块:是一个 Standlone 的容器,以简单的 Main 加载 Spring 启动。
dubbo-filter 模块
dubbo-filter模块提供了一些过滤器
dubbo-monitor 模块
dubbo-monitor 模块主要用于实现监控的,用于统计服务调用次数、调用时间的、调用链跟踪的服务。
dubbo-serialization
模块
dubbo-serialization 模块中封装了各类序列化框架的支持实现。