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

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

关键字: Cluster集群

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

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

使⽤方法:

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

Failsafe Cluster

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

Failfast Cluster

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

Failover Cluster(Dubbo默认策略)

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

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

Failback Cluster

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

Forking Cluster

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

Broadcast Cluster

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

Available Cluster

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

Merge Cluster

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西魏陶渊明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值