dubbo项目结构

1.概述

首先dubbo项目是一个基于maven 的项目 , 我们会发现模块非常多


dubbo模块.png

2.模块分包

dubbo模块分包.png

2.dubbo-common模块

dubbo-common 公共逻辑模块:包括 Util 类和通用模型。

dubbo-common.png

dubbo-remoting 远程通信模块:提供客户端和服务端的通信功能

dubbo-remoting模块.png
  • 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模块.png
  • dubbo-rpc-api :抽象各种协议以及动态代理,实现了一对一的调用。
    其他模块则提供对应的协议实现 。在 《用户指南 —— 协议参考手册》 中,可以看到每种协议的介绍。

dubbo-cluster

集群模块:将多个服务提供方伪装为一个提供方,包括:负载均衡, 集群容错,路由,分组聚合等。集群的地址列表可以是静态配置的,也可以是由注册中心下发。

dubbo-clsuter.png
  • 容错 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 开发指南 —— 合并结果扩展》 文档。
    整体流程如下
    cluster流程.png

dubbo-registry

注册中心模块:基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。

注册中心.png

dubbo-registry-api : 注册中心的接口定义 , 其他模块则是各种对注册中心的实现《用户指南 —— 注册中心参考手册》 有详细介绍各种注册中心

dubbo-monitor

监控模块: 统计调用次数,时间,拓展参见 《Dubbo 开发指南 —— 监控中心扩展》 。

dubbo-config

配置模块 : 是dubbo对外API , 用户通过config使用dubbo

dubbo-config.png

dubbo-config-api : 实现了 API 配置 和 属性配置 功能。
dubbo-config-spring :实现了 XML 配置 和 注解配置 功能。

dubbo-container

dubbo容器模块 : 以简单的main 方法启动容器


dubbo容器.png

dubbo-filter

过滤器模块 :提供了内置过滤器

dubbo-filter.png

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各模块的版本号

bom依赖.png

dubbo-all

dubbo/all/pom : 定义了 Dubbo 的打包脚本。

你可能感兴趣的:(dubbo项目结构)