Dubbo原理(1)--框架设计

Dubbo官网的框架设计(含详细解释):http://dubbo.apache.org/zh-cn/docs/dev/design.html

整体设计:

/dev-guide/images/dubbo-framework.jpg


Dubbo对框架的整体分层:

  1. Business层:
    1. 这一层只有Service;
    2. 有interface(接口)和implement(实现);
    3. 想远程调用,只要调用interface的方法,就可以远程调用实现了;
    4. 对于用户编程来说,只关心到这一层就结束了;
  2. RPC层:
    1. 这一层有:Config、Proxy、Registry、Cluster、Monitor、Protocol;
    2. 用于完成远程过程调用;
    3. Config:
      1. 配置层,封装配置文件里面解析出来的信息;
      2. 每一个标签都有对应的Config来进行信息封装;
    4. Proxy:
      1. 服务代理层;
      2. 利用代理的方式生成客户端/服务端的代理对象,代理对象互相调用方法;
    5. Registry:
      1. 注册中心层;
      2. 很多服务注册到注册中心,consumer从注册中心订阅需要的服务,去调用;
      3. 完成注册中心的相关功能:服务的注册、服务的发现;
    6. Cluster:
      1. 路由层+负载均衡层;
      2. Invoker为调用者,调用者调用很多的服务,同一个服务可能在多台机器上面都有,这一层可以做到负载均衡;
    7. Monitor:
      1. 监控层;
      2. 每一次调用信息都会发送给监控层;
      3. 监控层收到信息之后,可以以界面的方式展示;
      4. simple-monitor;
    8. Protocol:
      1. 远程调用层;
      2. 封装RPC调用;
      3. RPC调用中核心的三个:Invoker、Protocol、Exporter;
  3. Remoting层:
    1. 远程调用需要:A、B两个服务器架起通信的管道,通信和通信之间传递数据在该层;
    2. Remoting层:解决远程通信;
    3. Exchange层:
      1. 一个ExchangeClient(客户端),一个ExchangeServer(服务端),两个架起管道,进行数据的互联互通;
    4. Transport层:
      1. 传输层;
      2. 真正传输数据:使用Transport封装传输的;
      3. Transport的底层:netty框架,netty框架在该层工作;
    5. Serialize层:
      1. 序列化层;
      2. 在整个传输的过程当中:
        1. 数据要序列化出去,再网络传输;
        2. 收到数据之后,要反序列化回来,才能拿到数据对象;

图例说明:

  • 左边淡蓝背景:服务消费方(Consumer)使用的接口;
  • 右边淡绿色背景:服务提供方(Provider)使用的接口;
  • 位于中轴线上:双方都用到的接口;
  •  
  • 从下至上分为十层,各层均为单向依赖;
  • 右边的黑色箭头代表:层之间的依赖关系,每一层都可以剥离上层被复用;
  • Service 和 Config 层为 API(应用程序接口),其它各层均为 SPI(串行外设接口);
  •  
  • 绿色小块:扩展接口(interface),蓝色小块:实现类(implement),图中只显示用于关联各层的实现类;
  •  
  • 紫色三角箭头:继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法;
  • 蓝色虚线:初始化过程,即启动时组装链;
  • 红色实线:方法调用过程,即运行时调时链;
    • 显示:我们如何完成远程调用的;
  • 黑色箭头:依赖顺序,
    • 每一小层,基本对应Dubbo源代码的一个分包;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值