Dubbo 框架提供了哪几种集群容错方案?请分别说明它们的工作机制和适用场景。
考察说明
考察对 Dubbo 集群容错机制的理解和记忆。
回答思路
- 【回答框架 1】Dubbo 集群容错机制是一套在服务调用失败时处理异常的方案。它主要有 Failover、Failfast、Failsafe、Failback 和 Forking 五种。Failover 是默认的容错策略,调用失败后自动切换到其他 Provider 节点重试,适用于读操作或幂等写操作,但会增加响应延迟。
- 【回答框架 2】Failfast 是快速失败,一次调用失败立即抛出异常,适用于非幂等写操作,如新增或删除记录,以避免重复提交。Failsafe 是安全失败,调用失败后直接吞掉异常并返回空结果,适用于日志记录或消息通知等不影响主流程的调用。
- 【回答框架 3】Failback 是失败自动恢复,调用失败后返回一个空结果给消费者,并在后台定时重试,适用于异步消息通知或最终一致性的场景。Forking 是并行调用,同时向多个 Provider 发起请求,只要一个成功就返回,适用于实时性要求高、容忍资源浪费的读操作。
- 【回答框架 4】在配置方面,可以在服务提供者或消费者端通过 cluster 属性指定容错策略,也可以在 <dubbo:reference> 或 <dubbo:service> 中配置。选择时需结合业务特性,例如写操作避免 Failover 重试导致数据重复,读操作可用 Failover 或 Forking 提高成功率。
- 【关键点 1】Dubbo 默认使用 Failover 容错策略。
- 【关键点 2】Failfast 适用于非幂等写操作。
- 【关键点 3】Failsafe 会吞掉异常,适用于通知类调用。
- 【关键点 4】Failback 支持异步重试,常用于最终一致性。
- 【关键点 5】Forking 并行调用多个 Provider,适合读操作。