学习Dubbo源码的过程中,首先看到的是dubbo的集群容错模式,以下简单介绍10种集群容错模式
1.AvailableCluster
顾名思义,就是可用性优先,遍历所有的invokers,选择可用的
2.MergeableCluster:当接口需要多个服务组合返回值时,使用该接口
3.ForkingCluster:并行执行,当有一个返回值时,取该值,该方法中使用了线程池和LinkedBlockingQuene来并发所有的子任务,并阻塞父线程,实现很优雅。可用于查询等要求性能高的,不适用于非幂等的插入删除等操作
4.FailoverCluster:Dubbo的默认容错机制,失败重试,默认次数为2(不包含第一次),会优先选择未执行过的invoker。
5.RegistryAwareCluster:优先选择本地的invoker
6.FailsafeCluste:安全失败,当抛出异常时直接catch掉,只打印日志,一般用于记录日志等操作
7.FailfastCluster:快速失败,当失败后,立刻抛出异常,适用于非接口幂等的写操作。有类似于AvailableCluster
8.MockClusterWrapper,流程如下:
9.BroadcastCluster:异常自己吃掉,遍历所有invoker,广播所有的invoker做一件事。
10.FailbackCluster:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
参考大神文章:https://www.jianshu.com/p/e0235110fb74