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合并器,进行合并返回。比较小众,实用性不大,不 上图了。
文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。
原文链接:springlearn.blog.csdn.net/article/details/89524938
- 点赞
- 收藏
- 关注作者
评论(0)