Dubbo源码分析(一):Dubbo源码的结构概述
2016-05-06 11:41
381 查看
1.dubbo源码的结构
Dubbo源文件主要包含以上这么多包,其中:
dubbo-common
公共逻辑模块,包括Util类和通用模型。
dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议
则不需要使用此包。
dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,
不关心集群的管理。
dubbo-cluster
集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容
错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注
册中心的抽象。
dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。
dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏
Dubbo所有细节。
dubbo-container 容器模块,是一个Standlone的容器,以简单的Main加载Spring
启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加
载服务。
整体上按照分层结构进行分包,与分层的不同点在于:
container为服务容器,用于部署运行服务,没有在层中画出。
protocol层和proxy层都放在rpc模块中,这两层是rpc的核心,在不需要集群时(只
有一个提供者),可以只使用这两层完成rpc调用。
transport层和exchange层都放在remoting模块中,为rpc调用的通讯基础。
serialize层放在common模块中,以便更大程度复用。
下面是更详细的Project关系图,依赖关系线有点乱。整个模块是从上到下传递依赖的。
Dubbo源文件主要包含以上这么多包,其中:
dubbo-common
公共逻辑模块,包括Util类和通用模型。
dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议
则不需要使用此包。
dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,
不关心集群的管理。
dubbo-cluster
集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡, 容
错,路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注
册中心的抽象。
dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。
dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏
Dubbo所有细节。
dubbo-container 容器模块,是一个Standlone的容器,以简单的Main加载Spring
启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加
载服务。
整体上按照分层结构进行分包,与分层的不同点在于:
container为服务容器,用于部署运行服务,没有在层中画出。
protocol层和proxy层都放在rpc模块中,这两层是rpc的核心,在不需要集群时(只
有一个提供者),可以只使用这两层完成rpc调用。
transport层和exchange层都放在remoting模块中,为rpc调用的通讯基础。
serialize层放在common模块中,以便更大程度复用。
下面是更详细的Project关系图,依赖关系线有点乱。整个模块是从上到下传递依赖的。
相关文章推荐
- word技巧备忘
- mybatis获取xml文件中property对应的column
- 抽象工厂模式 Abstract Factory Pattern
- Android Dev Intro - Introducing GLSurfaceView
- iOS开发—在@interface,@implementation和@property中变量的定义
- Intellij Idea 12 生成serialVersionUID的方法
- 一种简单的数据库性能测试方法
- Spring MVC控制层判断登录 ,登录失败则返回提示信息
- html-中文字体在CSS中的显示(Unicode编码)
- iOS滑动解锁/滑动获取验证码效果实现
- Tab选项卡切换
- c++第五次上机实验第二题
- Path Sum 路径和(注:同时包含得到各个路径的模板:两种不同表达形式的代码)
- 实例变量 定义在 @interface 和 @implementation 有何区别?
- Python 各进制间的转换
- 欢迎使用CSDN-markdown编辑器
- c++第5次实验
- 让UITableView的表头随着tableView一起滚动
- MVC简单用户登录授权认证
- ant生成war包的简单实现