1.dubbo源码分析之dubbo项目结构
Posted bilifuture
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.dubbo源码分析之dubbo项目结构相关的知识,希望对你有一定的参考价值。
Dubbo是阿里的一个开源分布式服务治理框架
1.项目一览
Dubbo中maven的依赖关系如下:
1.1 dubbo-common
Dubbo-common是公共逻辑模块:提供工具类和通用模型,结构如下:
1.2 dubbo-remoting
Dubbo-remoting远程通信模块:提供通用的客户端,服务端通讯功能
Dubbo是阿里的一个开源分布式服务治理框架
1.项目一览
Dubbo中maven的依赖关系如下:
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的中心.
dubbo-rpc-api抽象各种协议以及动态代理,实现一对一调用
其他模块,实现dubbo-rpc-api,提供了对应的协议实现
另外duuo-rpc-default对应的dubbo://协议
1.4 dubbo-cluster
容错:
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.5 dubbo-registry
dubbo-registry-api抽象注册中心的注册和发现接口
其他模块,实现dubbo-registry-api,提供对应的注册中心实现,dubbo-registry-default对应Simple注册中心
1.6 dubbo-monitor
Dubbo-monitor监控模块:统计服务调用次数,调用时间,调用链跟踪服务,如下:
1.7 dubbo-config
dubbo-config配置模块:是dubbo对外的api,用户可以通过Config使用Dubbo,隐藏Dubbo的所有细节
dubbo-config-api是实现了API配置和配置属性的功能
dubbo-config-spring 实现XML配置和注解配置功能
1.8 dubbo-container
dubbo-container容器模块:一个Standlone的容器,用简单的main加载Spring启动,因为服务通常不需要tomcat等web容器特性,所以米有必要用web容器去加载服务
dubbo-container-api:定义了com.alibaba.dubbo.container.Container接口并且提供加载所有容器启动的main类
1.9 dubbo-filter
dubbo-filter过滤器模块:提供内置的过滤器
2.0 dubbo-plugin
dubbo-plugin插件模块:提供内置的插件
2.1 dubbo-serialization
dubbo-serialization序列化模块:提供多种序列话方法
2.2 dubbo-dependencies-bom
dubbo-dependencies-bom模块对dubbo依赖的第三方版本号进行统一管理
依赖关系如下:
以上是关于1.dubbo源码分析之dubbo项目结构的主要内容,如果未能解决你的问题,请参考以下文章