dubbo为集群调用提供了容错方案:
1、failover:(默认,推荐)
当出现失败时,会进行重试,默认重试2次,一共三次调用,但是会出现幂等性问题。
幂等性问题可以在业务层解决:
方案1:把数据的业务id作为数据库的联合主键,此时业务id不能重复。
方案2:(推荐)使用分布式锁来解决重复消费问题,例如redis。
2、failfast:当出现失败时,立即报错,不进行重试
3、failsafe:失败时不会报错,记录日志。
4、failback:失败就失败,开启定时任务,定时重发。
5、forking:并行访问多个服务器,获取任意一个结果即可认为成功。
结论:如果使用dubbo,不推荐把重试关闭,而实在非幂等性操作的场景下,服务提供者方做幂等性的方案。
官网地址:集群容错 | Apache Dubbo