计划从头整理一下Dubbo相关的基础知识和源码阅读,输出成文字以供自己后续阅读
分享出来之后,大家共享和监督概念是否准确
一、基础准备
- 代码地址:https://github.com/apache/dubbo
- 官方文档:http://dubbo.apache.org/zh-cn/docs/user/preface/architecture.html
- 控制台:
- 代码:https://github.com/apache/dubbo-admin
- 文档:http://dubbo.apache.org/zh-cn/docs/admin/introduction.html
二、概述
Dubbo是用Java语言编写,基于maven的项目,模块和功能非常多和丰富
三、整体架构
四、代码结构
所有的模块总共21个模块,分别如下:
名称 | 模块 | 子模块 | 描述 | |
公共逻辑模块 | dubbo-common | 包含util和通用模型 | ||
容器模块 | dubbo-container | dubbo-container-api | 是一个Standlone的容器,以简单的 Main 加载 Spring 启动,因为服务通常不需要 Tomcat/JBoss 等 Web 容器的特性,没必要用 Web 容器去加载服务 | |
dubbo-container-spring | ||||
dubbo-container-log4j | ||||
dubbo-container-logback | ||||
远程通讯模块 | dubbo-remoting | dubbo-remoting-api | 定义服务方和消费方之间的通信接口 | 提供客户端和服务端的通信功能 |
dubbo-remoting-netty | 基于 Netty 3 实现 | |||
dubbo-remoting-netty4 | 基于 Netty 4实现 | |||
dubbo-remoting-zookeeper | 是zookeeper的客服端通信,负责服务端和消费方与zookeeper进行通信 | |||
dubbo-remoting-etcd3 | Zookeeper 的升级版 | |||
dubbo-remoting-http | 基于 Jetty 或 Tomcat 实现 | |||
dubbo-remoting-p2p | P2P 服务器 | |||
dubbo-remoting-grizzly | 基于 Grizzly 实现,Grizzly 是一种应用程序框架 | |||
dubbo-remoting-mina | 基于 Mina实现,MINA是一个网络应用程序框架 | |||
远程调用模块 | dubbo-rpc | dubbo-rpc-api | 抽象各种协议以及动态代理,实现了一对一的调用 | 抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理,dubbo-rpc 是整个dubbo的一个核心模块。 |
dubbo-rpc-dubbo | dubbo:protocol id="dubbo1" name="dubbo" port="20880" dubbo:service protocol="dubbo" dubbo:provider protocol="dubbo" | |||
dubbo-rpc-injvm | ||||
dubbo-rpc-http | ||||
dubbo-rpc-rmi | ||||
dubbo-rpc-hessian | ||||
dubbo-rpc-webservice | ||||
dubbo-rpc-native-thrift | ||||
dubbo-rpc-thrift | ||||
dubbo-rpc-memcached | ||||
dubbo-rpc-redis | ||||
dubbo-rpc-rest | ||||
dubbo-rpc-xml | ||||
dubbo-rpc-grpc | ||||
过滤器模块 | dubbo-filter | 提供了内置过滤器 | ||
集群模块 | dubbo-cluster | 将多个服务提供方伪装为一个提供方,包括:负载均衡, 集群容错,路由,分组聚合等。集群的地址列表可以是静态配置的,也可以是由注册中心下发 | ||
注册中心模块 | dubbo-registry | 基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。 | ||
监控模块 | dubbo-monitor | 统计调用次数,时间 | ||
配置模块 | dubbo-config | 是dubbo对外API , 用户通过config使用dubbo | ||
使用模版 | dubbo-demo | dubbbo 一个快速启动的demo | ||
插件模块 | dubbo-plugin | |||
数据序列化层 | dubbo-serialization | 可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool。dubbo的序列化也支持多种协议 | ||
兼容以前版本的模块 | dubbo-compatible | 捐给apache后dubbo的包路径变了,这个模块还保留了以前路径的类,但都不建议使用了 | ||
三方库版本管理 | dubbo-dependencies-bom | pom文件 | 定义dubbo 依赖第三方库的版本号 , 在parent 中有引入 | |
版本管理 | dubbo-bom | pom文件 | 定义dubbo各模块的版本号 | |
dubbo-distribution | ||||
dubbo-configcenter | ||||
dubbo-dependencies | ||||
dubbo-metadata | ||||
dubbo-build-tools | ||||
打包模块 | dubbo-all | pom文件 | 定义了Dubbo的打包脚本 |