20.Dubbo集群容错
2020-09-14 本文已影响0人
山海树
Failvoer Cluster:失败重试
<dubbo:reference retires="2"/>针对当前接口的所有方法,失败后重试两次
<dubbo:reference>
<dubbo:method name="sayHello" retries="2”/> 针对当前接口的sayHello方法,重试
</dubbo:reference/>
Failfast Cluster:快速失败
Failsafe Cluster:安全失败 -----失败忽略异常
Failback Cluster:失败自动恢复,失败后记录日志,并按照一定的策略后期在进行重试。
Forking Cluster:并行调用
当消费方调用一个接口方法后,Dubbo Client会并行调用多个服务提供者的服务,只要其中有一个成功就返回。
<dubbo:reference id="userService" interface="com.test.UserService" group ="dubbo" version="1.0.0'
cluster="forking">
<dubbo:parameter key="forks" value="4"/>
</dubbo:reference>
Broadcast Cluster:广播调用
当消费者调用一个接口后,Dubbo Client逐个调用所有服务提供者,任意一台服务器调动异常则这次调用标志位失败。
所有的集群容错策略都是集成自抽象类AbstractClusterInvoker。
在消费端真的调用方法的时候会根据集体的配置最终调用到Cluster的具体实现类,该实现类在doInvoker()的时候会去RegistryDirectory管理的RouterChain的route()获取invoker列表。
最终执行调用。
1.Failfast Cluster---失败抛异常
image.png2.Failsafe Cluster---失败不会抛异常
image.png3.Failover Cluster---从url中获取重试次数,循环根据负载均衡选调用者进行调用
image.png4.Failback Cluster---失败记录,创建定时器去执行后续操作
image.pngimage.png
5.Forking Cluster---根据forks确定并行执行的invoker数
image.png6.Boradcast Cluster---所有全发
image.png自定义集群容错策略
image.pngimage.png
image.png image.png