1.dubbo源码分析之dubbo项目结构

Posted bilifuture

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.dubbo源码分析之dubbo项目结构相关的知识,希望对你有一定的参考价值。

Dubbo是阿里的一个开源分布式服务治理框架

1.项目一览

Dubbomaven的依赖关系如下:

1.1 dubbo-common

Dubbo-common是公共逻辑模块:提供工具类和通用模型,结构如下:

1.dubbo源码分析之dubbo项目结构

1.2 dubbo-remoting

Dubbo-remoting远程通信模块:提供通用的客户端,服务端通讯功能

1.dubbo源码分析之dubbo项目结构

Dubbo是阿里的一个开源分布式服务治理框架

1.项目一览

Dubbomaven的依赖关系如下:

 

1.1 dubbo-common

Dubbo-common是公共逻辑模块:提供工具类和通用模型,结构如下:

 

1.2 dubbo-remoting

Dubbo-remoting远程通信模块:提供通用的客户端,服务端通讯功能

dubbo-remoting-zookeeper 相当于zookeeper Client和zookeeper server的通信

实现dubbo-remoting-api

dubbo-remoting-grizzly 基于Grizzly实现

dubbo-remoting-http 基于jetty或者tomcat实现

dubbo-remoting-mina 基于mina实现

dubbo-remoting-netty 基于netty3实现

dubbo-remoting-netty4 基于netty4实现

dubbo-remoting-p2p p2p服务器,注册中心dubbo-registry-mulicast项目中使用这个项目.

需要关注dubbo-remoting-api + dubbo-remoting-netty4 和 dubbo-remoting-zookeeper

1.3 dubbo-rpc

dubbo-rpc远程调用模块:抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的关联

集群的相关管理,通过dubbo-cluster提供,上面可以看到dubbo-rpc是整个dubbo的中心.

1.dubbo源码分析之dubbo项目结构

dubbo-rpc-api抽象各种协议以及动态代理,实现一对一调用

其他模块,实现dubbo-rpc-api,提供了对应的协议实现

另外duuo-rpc-default对应的dubbo://协议

1.4 dubbo-cluster

1.dubbo源码分析之dubbo项目结构

容错:

org.apache.dubbo.rpc.cluster.Cluster接口和org.apache.dubbo.rpc.cluster.support包组合完成

Cluster把Directory中的多个Invoker伪装成一个Invoker,对上层透明,伪装过程包含了容错逻辑,调用失败后,重试另一个

目录:

org.apache.dubbo.rpc.cluster.Directory接口和org.apache.dubbo.rpc.cluster.directory包组合完成

Directory代表了多个Invoker,可以看成List,但是和List不一样的是,他的值是动态变化的,比如注册中心中的推送变更.

路由:

org.apache.dubbo.rpc.cluster.Router接口和org.apache.dubbo.rpc.cluster.router包组合完成

负责多个Invoker中按照路由规则选出子集,比如读写分离,应用隔离等.

配置:

org.apache.dubbo.rpc.cluster.Configurator接口和org.apache.dubbo.rpc.cluster.configurator包组合完成

负载均衡:

org.apache.dubbo.rpc.cluster.LoadBalance接口和org.apache.dubbo.rpc.cluster.loadbanlance包组合完成

LoadBalance负责多个Invoker中选出具体的一个用于本次调用,选得过程包含了负载均衡算法,调用失败后,需要重选.

合并结果:

org.apache.dubbo.rpc.cluster.Merger接口和org.apache.dubbo.rpc.cluster.merger包组合完成

合并返回结果,用于分组聚合

整体流程如下:

1.dubbo源码分析之dubbo项目结构

1.5 dubbo-registry

1.dubbo源码分析之dubbo项目结构

dubbo-registry-api抽象注册中心的注册和发现接口

其他模块,实现dubbo-registry-api,提供对应的注册中心实现,dubbo-registry-default对应Simple注册中心

1.6 dubbo-monitor

Dubbo-monitor监控模块:统计服务调用次数,调用时间,调用链跟踪服务,如下:

1.dubbo源码分析之dubbo项目结构

1.7 dubbo-config

dubbo-config配置模块:是dubbo对外的api,用户可以通过Config使用Dubbo,隐藏Dubbo的所有细节

1.dubbo源码分析之dubbo项目结构

dubbo-config-api是实现了API配置和配置属性的功能

dubbo-config-spring 实现XML配置和注解配置功能

1.8 dubbo-container

dubbo-container容器模块:一个Standlone的容器,用简单的main加载Spring启动,因为服务通常不需要tomcat等web容器特性,所以米有必要用web容器去加载服务

1.dubbo源码分析之dubbo项目结构

dubbo-container-api:定义了com.alibaba.dubbo.container.Container接口并且提供加载所有容器启动的main类

1.9 dubbo-filter

dubbo-filter过滤器模块:提供内置的过滤器

1.dubbo源码分析之dubbo项目结构

2.0 dubbo-plugin

dubbo-plugin插件模块:提供内置的插件

1.dubbo源码分析之dubbo项目结构

2.1 dubbo-serialization

dubbo-serialization序列化模块:提供多种序列话方法

1.dubbo源码分析之dubbo项目结构

2.2 dubbo-dependencies-bom

dubbo-dependencies-bom模块对dubbo依赖的第三方版本号进行统一管理

1.dubbo源码分析之dubbo项目结构1.dubbo源码分析之dubbo项目结构

依赖关系如下:




以上是关于1.dubbo源码分析之dubbo项目结构的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo实现的源码分析

dubbo同步调用异步调用和是否返回结果源码分析和实例

Dubbo限流源码分析

2Dubbo 源码分析 —— 深入理解Dubbo 的增强SPI机制

阿里巴巴Dubbo实现的源码分析

dubbo源码分析系列——项目工程结构介绍