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合并器,进行合并返回。比较小众,实用性不大,不 上图了。

发布了234 篇原创文章 · 获赞 116 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/Message_lx/article/details/89524938