2019独角兽企业重金招聘Python工程师标准>>>

dubbo学习--源码结构概述(5)

标签(空格分隔): dubbo 源码结构 概述


[TOC]

0. 前言

上一章我们对dubbo容器启动Main方法的流程进行了简要的分析。但是不能从全局概览dubbo的轮廓。之后我打算从高往低看,先俯瞰全局设计,然后在着眼细节实现。以期更好的学习dubbo。并且在此之间穿插一些相关话题的学习探讨。

1. 从包看架构

1.1. 源码包结构

  • 源码包功能说明 从上图看dubbo源码包的设计还是很清晰的,可以大概看出dubbo的分层架构。去除dubbo,dubbo-admin,dubbo-demo,dubbo-maven,dubbo-simple,dubbo-test,hessian-lite六个包大致可以分为9层。具体是怎么样的后面对源码有了比较清晰的了解可以回头结合官方文档再探讨。下面简单说明每个源码包的功能。
  1. dubbo: 构建完整服务框架的模块,方便其它模块依赖。
  2. dubbo-admin: 管理后台模块
  3. dubbo-cluster:集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡,容错,路由等。集群的地址列表可以是静态配置的,也可以是有注册中心下发的。
  4. dubbo-common:公共功能模块,包括Util类和通用模型。
  5. dubbo-config:配置模块,是dubbo对外的API,用户通过config使用dubbo,隐藏dubbo所有细节。
  6. dubbo-container: 容器模块,是一个Standalone模式的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss/Netty等Web容器的特性,没必要用Web容器去加载服务。
  7. dubbo-demo: 样例。
  8. dubbo-filter: 拦截器,在调用服务时做一些过滤。
  9. dubbo-maven: 代码发布。
  10. dubbo-monitor: 监控模块,统计服务调用次数,调用时间,调用链跟踪的服务。
  11. dubbo-registry: 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。
  12. dubbo-remoting: 远程通讯模块,相当于dubbo协议的实现,如果RPC用RMI协议,则不需要使用此包
  13. dubbo-rpc: 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理
  14. dubbo-simple: 轻量功能实现。
  15. dubbo-test: 测试模组。
  16. hessian-lite: 内嵌的Hessian RPC实现

1.2. 顶层包依赖关系

从上图可以看出,几个核心模块是dubbo-container,dubbo-cluster,dubbo-remoting,dubbo-rpc,dubbo-registry。左侧的几个功能模块都是基于dubbo做的一些功能。下面我们再来看一下,更详细的包依赖关系图。

1.3. 详细包依赖关系

从上图可以看出dubbo部分,每个核心模块都有一个API包,其他模块实现API,核心设计应该是面向接口的契约式设计。我们从这些API的定义,应该可以大概了解dubbo的工作原理和流程。 今天就到这啦,下次来看核心包的API的定义。

注: 上图所有的依赖关系均是根据gradle的依赖关系配置得出。

转载于:https://my.oschina.net/intellitor/blog/867101

dubbo学习--源码结构概述(5)相关推荐

  1. Linux内核学习(五):linux kernel源码结构以及makefile分析

    Linux内核学习(五):linux kernel源码结构以及makefile分析 前面我们知道了linux内核镜像的生成.加载以及加载工具uboot. 这里我们来看看linux内核的源码的宏观东西, ...

  2. 一、JDK 1.8源码分析-源码结构介绍篇

    1.路漫漫其修远兮 面试中经常被问到有没有看过一些框架的源码,要说看过么,看了不多,要说没看过么,没有系统的看完过,都是用到了去看: 2.如果想走技术这条路,还是好好看看吧,废话不多说,我这个已经开发 ...

  3. 跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?(源码感悟)

    来自:源码笔记 1 前言 由于现在微服务很流行,越来越多企业采用了SpringCloud微服务架构,而SpringBoot则是快速构建微服务项目的利器.于是笔者以此为切入点,将SpringBoot作为 ...

  4. 为什么要学习源码?学习源码对我们有用吗?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1 前言 由于现在微服务很流行,越来越多企业采用了Spr ...

  5. MyBatis源码解读之源码结构

    2019独角兽企业重金招聘Python工程师标准>>> 目的 文章主要了解MyBatis源码结构,每个包的具体功能.如何去学习MyBatis源码. MyBatis源码结构导图 查看大 ...

  6. Webrtc之源码结构

    当把代码下载完,可以通过vs2017编译之后,特别兴奋,但是,当打开工程的时候,懵了.....看下图 再看工程项目 此刻的心情,,,,,低落到无语. 这位大神介绍了一下源码结构 https://blo ...

  7. pnpm 源码结构及调试指南

    前言 随着前段时间尤大在 vue3 以及 vite 仓库中切换包管理为 pnpm 的 pr 成功 merge,以及 vue 生态中的一些项目例如 VueUse 也切换使用 pnpm,宣告着 vue 生 ...

  8. Spring源码深度解析(郝佳)-学习-源码解析-创建AOP静态代理实现(八)

    继上一篇博客,我们继续来分析下面示例的 Spring 静态代理源码实现. 静态 AOP使用示例 加载时织入(Load -Time WEaving,LTW) 指的是在虚拟机载入字节码时动态织入 Aspe ...

  9. Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(三)-Controller 解析

    在之前的博客中Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(一),己经对 Spring MVC 的框架做了详细的分析,但是有一个问题,发现举的例子不常用,因为我们在实际开发项 ...

  10. OVS的作用OVS 总体架构、源码结构及数据流程全面解析

    为什么要有OVS 1)方便网络管理与监控.OVS 的引入,可以方便管理员对整套云环境中的网络状态和数据流量进行监控,比如可以分析网络中流淌的数据包是来自哪个 VM.哪个 OS 及哪个用户,这些都可以借 ...

最新文章

  1. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
  2. Andriod TextView typeface
  3. Lnmp安装与配置笔记
  4. 【版本更新】完整UI库Kendo UI发布R3 2017|附下载
  5. spring事物不起作用
  6. luogu P4512 多项式除法 (模板题、FFT、多项式求逆)
  7. RenderMonkey 练习 第一天 【opengl 纹理】
  8. Nodejs - 如何用 eventproxy 模块控制并发
  9. 2020 年百度之星程序设计大赛 - 初赛二
  10. oracle 11g压缩分区表,ORACLE 10g和11g压缩分区表操作脚本
  11. 2021年好看高考倒计时源码
  12. 【raid5数据恢复案例】两组分别由4块SAS硬盘组成的raid5阵列,两组阵列组成lvm结构,出现故障后数据恢复方案
  13. 三思推荐的育儿书~~~
  14. google离线地图制作
  15. 如何在 Mac 上录制屏幕
  16. dat文件导入cad画图步骤_准确又高效的读入CAD几何——详解Fluent Meshing导入文件的几种方法...
  17. 数学老师必看,教您快速画椭圆
  18. 刷脸支付满足商户无人收单场景需求
  19. ppc64 安装jdk
  20. 解决浏览器主页被劫持问题

热门文章

  1. day03_01 Python历史、32bit和64bit系统的区别
  2. nginx root alias 文件路径配置
  3. 电脑软件从通过运行开启(耍帅必会)
  4. 运行出现Server Tomcat v8.5 Server at localhost failed to start.和A child container failed during start...
  5. 【HANA系列】SAP HANA中null变成问号的问题
  6. ES6的新特性(9)——对象的扩展
  7. D8 NOTES 2018-10-17
  8. JSONP - 从理论到实践
  9. Windows Mobile 6.0 (1)
  10. 如何开启VMware串口