【dubbo系列三】容错机制

目录

集群容错方式

集群容错路线

容错机制使用

容错机制原理

1.Failover Cluster (默认)

2.Failfast Cluster

3.Failsafe Cluster

4. Failback Cluster

5. Forking Cluster [ fork ]

6. Broadcast Cluster

在网络通信中有很多不确定的因素,比如网络延迟、网络中断等,此类情况出现的话会造成当前这次请求出现失败。当服务通信出现这类问题时,需要采取一定措施来应对。

Dubbo 提供了容错机制来处理这类错误

集群容错方式

Dubbo 的集群容错机制就有以下 10 种 ,其中默认的扩展类为 FailoverCluster。

可双击Shifit搜索集群容错机制接口自行查看接口扩展类 org.apache.dubbo.rpc.cluster.Cluster

集群容错路线

集群容错真正发生在消费端。当消费端发起调用时,会先从服务目录(注册中心)查询满足需求的服务提供者信息,在此基础上进行路由,路由后的结果才会真正进行容错处理

容错机制使用

Consumer消费层利用dubbo注解实现容错机制

timeout 表示 调用等待的时间,超过这个时间 就认为 失败了 retries 尝试调用的次数

@Controller
public class UserController {
    @DubboReference(
            loadbalance = "consistenthash",
            timeout = 1500 ,    // 等候多久 还没有得到相应 就认为失败
            retries = 2,        //失败重试次数 三次
            cluster = "failover"    //cluster : 集群容错机制切换
            /*cluster 常用容错机制参数
                failover    : 容错机制失败切换
                failfase    : 快速失败,只发起一次调用,失败立马报错
                failsafe    : 失败安全,直接跳过异常,继续执行后面操作
                forking     : 同时调用多个,只要成功一个即可
                broadcast   : 必须都成功才算成功
             */
    )

容错机制原理

1.Failover Cluster (默认)

失败自动切换,当出现失败,重试其他服务器(缺省);通常用于读操作,但是重试会带来更长延迟。可以通过retries = “2” 来设置重试次数(不含第一次)

@DubboReference(loadbalance = "random", retries=2, cluster = "failover")

2.Failfast Cluster

快速失败,只会发起一次调用,失败立即报错以下错误。通常用于非幂等性的写操作,比如:新增记录

@DubboReference(loadbalance = "random", cluster = "failfase")

3.Failsafe Cluster

失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。不抛出异常,直接继续执行后续的业务

@DubboReference(loadbalance = "random", cluster = "failsafe")

4. Failback Cluster

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

@DubboReference(loadbalance = "random", cluster = "failback")

5. Forking Cluster [ fork ]

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

@DubboReference(loadbalance = "random", cluster = "forking")

6. Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错 [2]。通常用于通知所有提供者更新缓存或日志等本地资源信息。

@DubboReference(loadbalance = "random", cluster = "broadcast")

dubbo系列文章 

        【dubbo系列一】搭建 dubbo 框架_萌小崔的博客-CSDN博客

        【dubbo系列二】负载均衡_萌小崔的博客-CSDN博客

        【dubbo系列四】熔断-服务降级_萌小崔的博客-CSDN博客

        【dubbo系列五】分组聚合_萌小崔的博客-CSDN博客


后续持续更新中!!

Thanks!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北九二七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值