dubbo调用失败策略_Dubbo源码解析之Cluster集群容错策略介绍

AAffA0nNPuCLAAAAAElFTkSuQmCC

前面说过了dubbo中Invoker代表了一个执⾏体,当我们在服务器启动一个dubbo 服务,其指定的每一个服务接口,都会⽣成一个Invoker对象,而在集群中因为我们的dubbo部署在了多个服务器所以会每一个Invoker对象都会有⼀个List集合。 而Cluster就负责对这些Invoker集合进⾏处理而执行。 而Cluster有多个实现类, 每个实现类都是⼀种策略。我们可以在SPI⽂件中,看到总共有多少策略。然后我们一个一个分析介绍

关键字: Cluster集群

Dubbo中的策略在SPI文件中可以看到

AAffA0nNPuCLAAAAAElFTkSuQmCC

Dubbo源码解析之Cluster集群容错策略介绍

使⽤方法:

将spi文件中,key就是策略名字。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Failsafe Cluster

Fail-Safe的含义为“失败安全”,即使在故障的情况下也不会造成伤害,适合不管 执行结果, 出现异常时,直接忽略。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Failfast Cluster

快速失败,什么是快速失败,eg: 在对集合数据处理前,⾸先对集合是否为null进行, 判断,当为空就可以抛出⼀个 Fail-Fast错误,一个不合法的值和状态,在第⼀时间 就应该报错,⽽不是等到使⽤的时候才报错。而在dubbo集群中快速失败的就是出 现异常直接捕捉抛出。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Failover Cluster(Dubbo默认策略)

失败转移,当一个报错之后,通过重试次数,去获取另外一个Invoker 。可通过 retries="2"来设置重试次数(不含第一次)

注意: 这里有⼀个坑,就是当你以为把重试次数该为0时候,就不会有执⾏结果了, 这是不会的,⼩于等于0,会默认指定为1,即调⽤1次。 感觉这个retyies=3,其实就是调⽤了3次,一次正常调⽤,当失败了2次重试。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Failback Cluster

失败后直接返回成功,但是将该Invoker记录,定时5s后重试。失败 后一直重试,直到执行成功后,移除。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Forking Cluster

并行调用,多个Invoker,只要一个成功就成功返回。比较浪费资 源,只适合读操作,写操作风险很大,不要考虑。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Broadcast Cluster

类似于广播通知,对所有提供者,逐个调用,任意一台报错则报错。

AAffA0nNPuCLAAAAAElFTkSuQmCC

Available Cluster

从Invoker列表中获取第一个可用的Invoker

AAffA0nNPuCLAAAAAElFTkSuQmCC

Merge Cluster

合并接口,要配合merge使用,向所有的服务接口,进行请求, 然后将结果用 指定的merge合并器,进行合并返回。比较小众,实用性不大,不 上图了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值