前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dubbo源代码解析之-集群容错

dubbo源代码解析之-集群容错

作者头像
yiduwangkai
发布2019-09-17 15:49:24
4310
发布2019-09-17 15:49:24
举报
文章被收录于专栏:大数据进阶大数据进阶

Failover Cluster:失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用)

可通过retries="2"来设置重试次数(不含第一次)

Failfast Cluster:快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作

Failsafe Cluster:失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作

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

Forking Cluster:并行调用多个服务器,只要一个成功即返回,通常用于实时性要求较高的读操作

可通过forks="2"来设置最大并行数。

Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于更新提供方本地状态

下面我们来看一下UML图

图1

图2

图1和图2的关系,在这里可以理解为是使用了装饰器模式,根据配置,通过cluster接口找对应的实现,在具体的实现中,在将任务分配给收下的小弟,这里的小弟就是具体的各个Invoker

下面先来看下官方文档给出的调用流程图

图3

该图可以这样理解是MockClusterInvoker-->FailoverInvoker/FailfastInvoker/FailsafeInvoker/FailbackInvoker/ForkingInvoker-->Directory-->Router--->loadBalance-->InvokerWrapper---->FutureFilter

下面先以Dubbo默认的FailoverInvoker,失败切换的策略进行详细讲解

从代码可以看出来,其实是循环一个可调用的列表,当一次调用失败后,就切换到下一个

下面来看下快速失败FailfastInvoker和失败安全failsafeInvoker

快速失败会直接抛出异常,代码如下

失败安全,在失败后只是进行了简单的日志记录,但是会返回一个空的结果集

在来看下失败恢复,失败后会进行记录,然后通过定时任务进行调用,重试间隔时间是5秒,不可配置

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档