Dubbo容错机制能增强整个应用的健壮性,容错过程对上层用户是完全透明的,但用户也可以通过不同的配置来选择不同的容错机制。每种容错机制又有自己的个性化配置项。Dubbo中现有failover,failfast,failback,failsafe,forking,broadcast,mock,available,mergeable实现

1.Failover
当出现失败时,会重试其他服务器,用户可以通过retries=2设置重试次数,这是dubbo的默认容错机制,会对请求做负载均衡。通常使用在读操作和幂等的写操作上,但重试会导致接口的延迟增大,在下游机器负载已经达到极限时,重试容易加重下游服务的负载。

2.Failfast
快速失败,当请求失败后,快速返回异常结果,不做任何重试,该容错机制会对请求做负载均衡,通常使用在非幂等接口的调用上。该机制受网络波动影响较大

3.Failsafe
当出现异常时,直接忽略异常。会对请求做负载均衡。通常使用在佛系服务,不关心数据是否调用成功,并且不想抛异常影响外层调用,如某些不重要的日志同步,即使出现异常也无所谓

4.failback
请求失败后,会自动记录在失败队列中,并由一个定时线程池定时重试,适用于一些异步或最终一致性的请求。请求会做负载均衡

5.Forking
同时调用多个相同的服务,只要其中一个返回,则立即返回结果,用户可以通过forks来确定最大并行调用数量,使用在对接口实时

6.broadcast
广播调用所有可用的服务,任意一个节点报错则报错,通常用于服务状态更新后的广播

7.mock
提供调用失败时,返回伪造的响应结果,或直接强制返回伪造的结果,不会发起远程调用

8.Available
最简单的方式,请求不会做负载均衡,便利所有服务列表,找到第一个可用的节点,直接请求并返回结果。如果没有可用的节点,则直接抛出异常

9.Mergeable
mergeable可以先把多个请求的结果合并到一起