第7章:Dubbo集群容错
Dubbo容错机制对上层透明(上层看不到具体的实现)
1.容错机制概述
1.1 Failover
Cluster接口上有SPI注解@SPI(FailoverCluster.NAME),即默认实现是Failover
使用for循环实现重试,for循环次数就是重试的次数。具体流程如下:
- 校验。如果for循环次数大于1,即有过1次重试。则会再次娇艳节点是否被销毁,传入的Invoker列表是否为空。
- 负载均衡。调用select方法做负载均衡,得到要调用的节点,并记录这个节点到保存出现异常、记录调用过哪些节点的集合中(用来做负载均衡,避免重复调用同一个节点)
- 远程调用。调用invoker#invoke方法做远程调用,成功则返回,异常则记录异常信息,再做下次循环。
1.2 Failfast
Failfast会在失败后直接抛出异常并返回,实现非常简单。
1.3 Failsafe
如果抛出异常,则会直接忽略,返回一个空的结果集。