Dubbo 核心知识点整理
Dubbo 核心知识点
1. Dubbo 是什么?
Apache Dubbo 是一款高性能、轻量级、基于 Java 的开源 RPC 框架。
主要用于微服务之间的远程服务调用,提供服务注册发现、负载均衡、流量管控、集群容错、SPI 扩展等能力。
与 Spring Cloud 核心区别
Dubbo:RPC 框架
- 基于 TCP 长连接 + 高效序列化
- 性能极高,适合高并发内部服务调用
- 专注服务治理,生态轻量
Spring Cloud:REST 微服务生态
- 基于 HTTP 短连接
- 生态完整(网关、配置、链路、消息等)
- 易用性强,性能略低
一句话:
性能优先、内部微服务调用 → Dubbo生态完整、对外网关 / 业务系统 → Spring Cloud
2. Dubbo 四大核心角色
Provider(服务提供者)
暴露服务,注册到注册中心
Consumer(服务消费者)
调用远程服务,从注册中心订阅地址
Registry(注册中心)
服务注册、发现、地址推送
常用:Nacos、ZooKeeper、Redis、Consul
Monitor(监控中心)
统计调用次数、耗时、成功率
提供者注册、消费者订阅、注册中心分发、监控统计。
3. 一次完整调用流程
- Provider 启动,向 Registry 注册自己的地址、接口、版本、协议
- Consumer 启动,向 Registry 订阅所需服务地址
- Registry 把服务列表推送给 Consumer
- Consumer 本地缓存服务列表
- Consumer 调用时,根据负载均衡选择一个 Provider
- Consumer 通过 ** 长连接(TCP)** 直接调用 Provider
- 调用过程中,数据上报 Monitor
- Provider 上下线时,注册中心实时推送变更,Consumer 动态更新列表
关键点:
- 消费者只在启动 / 变更时访问注册中心,调用时不经过注册中心
- 调用是点对点直连,性能极高
4. Dubbo 支持的协议(高频)
dubbo 协议(默认)
- 基于 TCP 长连接、NIO 异步
- 性能最好,小数据包场景最优
- 不适合大文件、大数据传输
http 协议
- 短连接,跨语言方便
- 性能一般
grpc /triple 协议(Dubbo3 主推)
- 基于 HTTP/2,流式通信、云原生友好
rmi、hessian、webservice
- 跨语言兼容,性能较差,少用
5. 序列化方式
影响性能与兼容性:
- Hessian2(Dubbo 默认)
- 性能好、跨语言、体积小
- Protobuf(Dubbo3 推荐)
- 体积极小、性能极高、跨语言强
- 云原生、兼容性好
- JSON
- 可读性强,性能差
6. 负载均衡策略(必考)
Dubbo 内置 4 种,默认 random
Random(随机)
默认,压力均匀,简单高效
RoundRobin(轮询)
依次请求,性能一般
LeastActive(最少活跃调用)
优先调调用少、响应快的机器
智能压慢节点,生产常用
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.