Dubbo 集群容错、负载均衡与异步调用
Dubbo 集群容错 📖 前置阅读:本文假设读者已掌握 SpringBoot Dubbo 的基本 RPC 操作(@DubboService / @DubboReference)。如果还不熟悉,建议先阅读 SpringBoot Dubbo 全操作指南。 一、⚡ 问题切入:RPC 调用失败了怎么办? 上一篇文章的 @DubboReference 默认配置了三件事: Provider 有多个实例时——随机选一个(负载均衡) 调用失败时——自动重试 2 次(集群容错) 调用超过 1 秒——抛超时异常 默认策略覆盖了 80% 的场景,但剩下的 20% 需要精确控制——这就是 Dubbo 服务治理的核心:集群容错(怎么处理失败)、负载均衡(怎么选择节点)、调用模式(同步还是异步)。 二、集群容错 —— 失败了怎么办 2.1 六种集群容错策略 Dubbo 的 Cluster 接口定义了容错行为。Consumer 侧配置: 策略 配置值 行为 适用场景 Failover(默认) failover 失败后自动切换其他 Provider 重试,默认重试 2 次(共 3 次调用) 幂等的读操作 Failfast failfast 失败后立即报错——不重试 非幂等写操作(创建订单、扣库存) Failsafe failsafe 失败后吞掉异常——返回 null / 忽略错误 非关键操作(日志、通知) Failback failback 失败后记录到后台线程——定时重试 最终一致性场景(数据同步) Forking forking 同时调用所有 Provider——取第一个成功返回的 高可用低延迟,但浪费资源 Broadcast broadcast 逐个调用所有 Provider——任何一个失败就报错 通知所有实例(缓存刷新、配置更新) // 消费端配置集群容错策略 @DubboReference( cluster = "failfast", // 写操作——不重试 retries = 0 // 即使 Failover 模式,也可以设 retries=0 关掉重试 ) private OrderService orderService; 2.2 Failover 原理与幂等陷阱 Failover 是默认策略——它的逻辑是: ...