1.概述
首先dubbo项目是一个基于maven 的项目 , 我们会发现模块非常多
2.模块分包
2.dubbo-common模块
dubbo-remoting 远程通信模块:提供客户端和服务端的通信功能
dubbo-remoting-zookeeper
: 是zookeeper 的客服端通信,负责服务端和消费方与zookeeper进行通信 。dubbo-remoting-api
: 定义服务方和消费方之间的通信接口dubbo-remoting-grizzly
,基于 Grizzly 实现。dubbo-remoting-http
,基于 Jetty 或 Tomcat 实现。dubbo-remoting-mina
,基于 Mina实现。dubbo-remoting-netty
,基于 Netty 3 实现。dubbo-remoting-netty4
,基于 Netty 4实现。
dubbo-remoting-p2p
,P2P 服务器。注册中心 dubbo-registry-multicast
项目 的使用该项目
dubbo默认使用的也是生产中使用的最多的通信方式是netty , 所以我们只需看dubbo-remoting-api
+ dubbo-remoting-netty4
以及和zk 的通信模块 dubbo-remoting-zookeeper
dubbo-rpc
远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理,dubbo-rpc 是整个dubbo的一个核心模块。
dubbo-rpc-api
:抽象各种协议以及动态代理,实现了一对一的调用。
其他模块则提供对应的协议实现 。在 《用户指南 —— 协议参考手册》 中,可以看到每种协议的介绍。
dubbo-cluster
集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 集群容错,路由,分组聚合等。集群的地址列表可以是静态配置的,也可以是由注册中心下发。
容错 com.alibaba.dubbo.rpc.cluster.support
: cluster 将 Directory 中的多个 Invoker 伪装成一个 Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个。目录 com.alibaba.dubbo.rpc.cluster.directory
: Directory 代表了多个 Invoker ,可以把它看成 List ,但与 List 不同的是,它的值可能是动态变化的,比如注册中心推送变更。路由 com.alibaba.dubbo.rpc.cluster.router
:负责从多个 Invoker 中按路由规则选出子集,比如读写分离,应用隔离等。拓展参见 《Dubbo 用户指南 —— 路由规则》 和 《Dubbo 开发指南 —— 路由拓展》 文档。配置com.alibaba.dubbo.rpc.cluster.configurator
:拓展参见 《Dubbo 用户指南 —— 配置规则》 文档。负载均衡 com.alibaba.dubbo.rpc.cluster.loadbalance
:LoadBalance 负责从多个 Invoker 中选出具体的一个用于本次调用,选的过程包含了负载均衡算法,调用失败后,需要重选。拓展参见 《Dubbo 用户指南 —— 负载均衡》 和 《Dubbo 开发指南 —— 负载均衡拓展》 文档。-
com.alibaba.dubbo.rpc.cluster.merger
:合并返回结果,用于分组聚合。拓展参见 《Dubbo 用户指南 —— 分组聚合》 和 《Dubbo 开发指南 —— 合并结果扩展》 文档。
整体流程如下
dubbo-registry
注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
dubbo-registry-api
: 注册中心的接口定义 , 其他模块则是各种对注册中心的实现《用户指南 —— 注册中心参考手册》 有详细介绍各种注册中心
dubbo-monitor
监控模块: 统计调用次数,时间,拓展参见 《Dubbo 开发指南 —— 监控中心扩展》 。
dubbo-config
配置模块 : 是dubbo对外API , 用户通过config使用dubbo
dubbo-config-api : 实现了 API 配置 和 属性配置 功能。
dubbo-config-spring
:实现了 XML 配置 和 注解配置 功能。
dubbo-container
dubbo容器模块 : 以简单的main 方法启动容器
dubbo-filter
过滤器模块 :提供了内置过滤器
dubbo-filter-cache
: 缓存过滤器 , 拓展参考 《Dubbo 用户指南 —— 结果缓存》 和 《Dubbo 开发指南 —— 缓存拓展》 文档。dubbo-filter-validation
:参数校验过滤器 , 拓展参考 《Dubbo 用户指南 —— 参数验证》 和 《Dubbo 开发指南 —— 验证扩展》 文档。dubbo-plugin
插件模块 : 提供了内置插件
dubbo-qos
: 提供在线运维命令 ,拓展参考 《Dubbo 用户指南 —— 新版本 telnet 命令使用说明》 和 《Dubbo 开发指南 —— Telnet 命令扩展》 文档。
hessian-lite
dubbo对hessian2序列化的部分精简, 改进。
dubbo-demo
dubbbo 一个快速启动的demo
dubbo-test
dubbo 测试模块
maven-bom
dubbo-dependencies-bom
:定义dubbo 依赖第三方库的版本号 , 在parent 中有引入
dubbo-bom
:定义dubbo各模块的版本号
dubbo-all
dubbo/all/pom
: 定义了 Dubbo 的打包脚本。
。