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

举报
西魏陶渊明 发表于 2022/09/25 04:32:47 2022/09/25
【摘要】 前面说过了dubbo中Invoker代表了一个执⾏体,当我们在服务器启动一个dubbo 服务,其指定的每一个服务接口,都会⽣成一个Invoker对象,而在集群中因为我们的dubbo部署在了多个服...

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

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/89524938

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。