当前位置: 首页 > news >正文

spring cloud alibaba-dubbo3 rpc运行原理

Dubbo3 运行原理

Dubbo3 是 Apache Dubbo 的最新版本,是一个高性能、轻量级的分布式服务框架,支持微服务架构。相比 Dubbo2,它在协议、扩展性、服务治理、流控等方面做了大量改进,特别是引入了 Triple 协议,使其更加适应现代微服务架构需求。


核心架构

Dubbo 的运行机制包括以下核心组件:

  1. 服务提供者(Provider)
  • 提供服务的具体实现。
  • 启动时通过注册中心暴露服务。
  1. 服务消费者(Consumer)
  • 调用远程服务。
  • 启动时从注册中心订阅服务。
  1. 注册中心(Registry)
  • 服务的元数据存储与发现。
  • 负责服务的动态注册和发现。
  • Dubbo3 支持 Zookeeper、Nacos、Consul 等作为注册中心。
  1. 协议层(Protocol)
  • Dubbo3 默认采用基于 gRPC 的 Triple 协议,支持 HTTP/2 和 protobuf。
  • 兼容旧版 Dubbo 协议,支持多协议。
  1. 调用链路
  • 支持透明化的 RPC 调用,通过拦截器实现动态过滤和增强。
  1. 治理与监控
  • 包括负载均衡、限流熔断、服务降级、监控和日志等。

Dubbo3 的运行流程

服务注册与发现
  1. 服务注册
  • Provider 启动时,向注册中心注册服务元数据(包括服务名称、地址、端口、接口信息等)。
  1. 服务发现
  • Consumer 启动时,从注册中心订阅所需服务列表,动态感知服务的上线、下线和变更。
服务调用
  1. 动态代理
  • Consumer 通过动态代理生成服务接口的本地实现,用户调用时,实际是发起一个远程 RPC 请求。
  1. 负载均衡
  • Consumer 根据配置的负载均衡策略(如随机、轮询、一致性哈希等)选择目标 Provider。
  1. 调用链路
  • Consumer 发起远程调用请求,经过协议层序列化后,通过网络传输到 Provider。
  1. 响应返回
  • Provider 接收到请求后,执行具体方法,结果通过网络返回给 Consumer。

Dubbo3 的主要特性

1. Triple 协议
  • 基于 gRPC 的高性能协议,支持 HTTP/2。
  • 使用 protobuf 作为默认序列化方式,极大提高了跨语言支持能力。
  • 支持流式通信(Streaming)和双向流通信(Bi-Directional Streaming)。
2. 服务元数据中心
  • Dubbo3 使用独立的元数据中心存储服务信息,支持 JSON 和 protobuf 格式。
  • 提供更灵活的服务治理能力,如版本控制、元数据的动态更新等。
3. 增强的服务治理
  • 限流熔断 :支持基于 QPS 和并发数的限流。
  • 负载均衡 :支持多种策略(随机、最少活跃调用、一致性哈希等)。
  • 服务降级 :当服务不可用时,提供兜底策略。
4. 多语言支持
  • 支持 Java、Go、Python 等多语言互通,适配混合语言开发场景。
5. 流控与链路增强
  • 支持链路追踪(如 OpenTelemetry)。
  • 内置流控和超时机制。

Dubbo3 的运行时组件

  1. Protocol(协议层)
    • 负责序列化、反序列化和通信。
    • Triple 协议是默认协议,也支持 Dubbo2 协议和 HTTP 协议。
  2. Cluster(集群层)
    • 提供负载均衡、失败重试、熔断降级等功能。
    • 默认策略为随机(Random)。
  3. Invoker(调用层)
    • 是 Dubbo 的核心接口,封装了服务调用逻辑。
  4. Filter(过滤器)
    • 类似拦截器的功能,可在服务调用前后执行自定义逻辑。
  5. SPI(可扩展机制)
    • Dubbo 的核心设计之一,基于 Java SPI 的增强实现,支持自定义扩展组件。

Dubbo3 的改进点

特性Dubbo2Dubbo3
协议Dubbo 自定义协议Triple(基于 gRPC)
序列化方式Hessian、Java 原生序列化Protobuf
多语言支持较差极好
服务元数据注册中心嵌套存储独立元数据中心
流式通信不支持支持流式和双向流通信
服务治理基础的限流、熔断增强的治理功能

Dubbo3 运行原理示意图

 
plaintext
复制代码
+-----------------------------------+ | 注册中心 | +-----------------------------------+↑ ↑| 服务注册 | 服务订阅| | +-----------+ +-----------+ | Provider | | Consumer | +-----------+ +-----------+↓ ↑+-----------------------------------+| Triple 协议通信层 |+-----------------------------------+↓ ↑ +-----------+ +-----------+ | 方法执行 | | 动态代理 | +-----------+ +-----------+

总结

Dubbo3 相较于 Dubbo2,适配了现代微服务架构的需求,尤其是在协议、跨语言支持和服务治理方面做出了显著提升。通过引入 Triple 协议和元数据中心,Dubbo3 提供了更高的性能和更灵活的扩展性,是大规模分布式服务的强大工具。

http://www.lryc.cn/news/518247.html

相关文章:

  • 【Uniapp-Vue3】computed计算属性用法及方法对比
  • web实操10——Filter和Listener
  • Spring中,出现依赖不完全注入后才执行逻辑
  • 如何选择 Dockerfile 的放置方式
  • 用 HTML5 Canvas 和 JavaScript 实现炫酷跨年烟花特效
  • cat命令详解
  • el-table 自定义表头颜色
  • window.print()预览时表格显示不全
  • React Router底层核心原理详解
  • linux MySQL 实时性能监控工具
  • ModuleNotFoundError: No module named ‘setuptools_rust‘ 解决方案
  • 基于Spring Boot的海滨体育馆管理系统的设计与实现
  • 【机器视觉】OpenCV 图像轮廓(查找/绘制轮廓、轮廓面积/周长、多边形逼近与凸包、外接矩形)
  • 深入浅出:React 前端框架解析与应用
  • 【网络安全设备系列】7、流量监控设备
  • qemu解析qcow文件
  • 免费网站源码下载指南:如何安全获取并降低开发成本
  • 【Ubuntu】如何设置 Ubuntu 自动每日更新:轻松保持系统安全
  • 江科大STM32入门——UART通信笔记总结
  • github gitbook写书
  • 探秘MetaGPT:革新软件开发的多智能体框架(22/30)
  • 【优选算法】Binary-Blade:二分查找的算法刃(下)
  • Improving Language Understanding by Generative Pre-Training GPT-1详细讲解
  • 分治算法——优选算法
  • EtherCAT转Modbus网关与TwinCAT3的连接及配置详述
  • Apache Hadoop YARN框架概述
  • 三甲医院等级评审八维数据分析应用(八)--数据治理的持续改进与反馈机制篇
  • XML通过HTTP POST 请求发送到指定的 API 地址,进行数据回传
  • 科大讯飞前端面试题及参考答案 (下)
  • 【理论】测试框架体系TDD、BDD、ATDD、DDT介绍