Dubbo 核心知识点整理

Dubbo 核心知识点整理

薛定谔的汪

Dubbo 核心知识点


1. Dubbo 是什么?

Apache Dubbo 是一款高性能、轻量级、基于 Java 的开源 RPC 框架。

主要用于微服务之间的远程服务调用,提供服务注册发现、负载均衡、流量管控、集群容错、SPI 扩展等能力。

与 Spring Cloud 核心区别

  • Dubbo:RPC 框架

    • 基于 TCP 长连接 + 高效序列化
    • 性能极高,适合高并发内部服务调用
    • 专注服务治理,生态轻量
  • Spring Cloud:REST 微服务生态

    • 基于 HTTP 短连接
    • 生态完整(网关、配置、链路、消息等)
    • 易用性强,性能略低

一句话:

性能优先、内部微服务调用 → Dubbo生态完整、对外网关 / 业务系统 → Spring Cloud


2. Dubbo 四大核心角色

  1. Provider(服务提供者)

    暴露服务,注册到注册中心

  2. Consumer(服务消费者)

    调用远程服务,从注册中心订阅地址

  3. Registry(注册中心)

    服务注册、发现、地址推送

    常用:Nacos、ZooKeeper、Redis、Consul

  4. Monitor(监控中心)

    统计调用次数、耗时、成功率

提供者注册、消费者订阅、注册中心分发、监控统计。


3. 一次完整调用流程

  1. Provider 启动,向 Registry 注册自己的地址、接口、版本、协议
  2. Consumer 启动,向 Registry 订阅所需服务地址
  3. Registry 把服务列表推送给 Consumer
  4. Consumer 本地缓存服务列表
  5. Consumer 调用时,根据负载均衡选择一个 Provider
  6. Consumer 通过 ** 长连接(TCP)** 直接调用 Provider
  7. 调用过程中,数据上报 Monitor
  8. Provider 上下线时,注册中心实时推送变更,Consumer 动态更新列表

关键点:

  • 消费者只在启动 / 变更时访问注册中心,调用时不经过注册中心
  • 调用是点对点直连,性能极高

4. Dubbo 支持的协议(高频)

  • dubbo 协议(默认)

    • 基于 TCP 长连接、NIO 异步
    • 性能最好,小数据包场景最优
    • 不适合大文件、大数据传输
  • http 协议

    • 短连接,跨语言方便
    • 性能一般
  • grpc /triple 协议(Dubbo3 主推)

    • 基于 HTTP/2,流式通信、云原生友好
  • rmi、hessian、webservice

    • 跨语言兼容,性能较差,少用

5. 序列化方式

影响性能与兼容性:

  1. Hessian2(Dubbo 默认)
    • 性能好、跨语言、体积小
  2. Protobuf(Dubbo3 推荐)
    • 体积极小、性能极高、跨语言强
    • 云原生、兼容性好
  3. JSON
    • 可读性强,性能差

6. 负载均衡策略(必考)

Dubbo 内置 4 种,默认 random

  1. Random(随机)

    默认,压力均匀,简单高效

  2. RoundRobin(轮询)

    依次请求,性能一般

  3. LeastActive(最少活跃调用)

    优先调调用少、响应快的机器

    智能压慢节点,生产常用

  4. ConsistentHash(一致性哈希)

    相同参数总是路由到同一提供者

    适合有状态服务、缓存亲和


7. 集群容错模式

1)Failover(默认,失败自动切换)

  • 失败后重试其他节点
  • 适合读操作、幂等接口
  • 缺点:重试放大流量,可能引发雪崩

2)Failfast(快速失败)

  • 只调用一次,失败立即报错
  • 适合非幂等写操作(新增 / 支付)

3)Failsafe(安全失败)

  • 异常直接忽略,返回空
  • 适合日志、消息等不重要操作

4)Failback(失败自动恢复)

  • 失败后台记录,定时重发
  • 适合消息通知类

5)Forking(并行调用)

  • 同时调用多个节点,一个成功即返回
  • 追求极低延迟,但浪费资源

8. 服务降级 & 限流

  • Mock 降级

    调用失败时返回模拟数据,不抛异常

  • 屏蔽降级 force:return

    直接不调用,直接返回

  • 容错降级 fail:return

    调失败了再返回默认值

  • Dubbo 支持:

    并发控制、TPS 限流、黑白名单、权重动态调整


9. Dubbo 的 SPI 机制

  • JDK SPI:加载所有实现,不能按需加载

  • Dubbo SPI:增强版,按需加载、可配置、有默认值、支持 AOP

    Dubbo 几乎所有组件都是 SPI 可扩展:

    协议、序列化、负载均衡、容错、路由、过滤器…

一句话:

Dubbo 通过 SPI + 自适应注解 + 包装器 实现高度可扩展,是其强大的核心原因。


10. Dubbo 3 重要新特性

  • Triple 协议(基于 HTTP/2)
  • 完美支持云原生、K8s、网关穿透
  • Protobuf 标准化
  • 服务发现性能大幅优化
  • 兼容低版本,平滑升级
  • Title: Dubbo 核心知识点整理
  • Author: 薛定谔的汪
  • Created at : 2022-04-30 19:44:48
  • Updated at : 2026-03-18 15:42:42
  • Link: https://www.zhengyk.cn/2022/04/30/dubbo/dubbo-0/
  • License: This work is licensed under CC BY-NC-SA 4.0.