前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dubbo集群容错模式之Failsafe实现 原

Dubbo集群容错模式之Failsafe实现 原

作者头像
克虏伯
发布2019-04-15 14:47:01
7300
发布2019-04-15 14:47:01
举报
文章被收录于专栏:软件开发-青出于蓝

注: Dubbo版本是2.6.2

                                               图1 Dubbo的FailsafeClusterInvoker类继承图

1.Failsafe的含义

    Failsafe可以理解为出现异常时,直接忽略。可以用在类似写日志之类的,允许一定量信息丢失的地方。

2.Failsafe的实现

    核心代码在FailsafeClusterInvoker的doInvoke(Invocation,List<Invoker<T>>,LoadBalance)中,源码如下。

代码语言:javascript
复制
@Override
public Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {
    try {
        checkInvokers(invokers, invocation);
        Invoker<T> invoker = select(loadbalance, invocation, invokers, null);
        return invoker.invoke(invocation);
    } catch (Throwable e) {
        logger.error("Failsafe ignore exception: " + e.getMessage(), e);
        return new RpcResult(); // ignore
    }
}
  • 首先根据loadbalance从服务提供者列表中选取一个。
  • 之后调用服务提供者的服务,如果调用成功,则直接返回结果;如果调用失败,则用error级别的日志记录exception,但是不抛出异常,之后返回一个默认值。

    比较好理解,重点在于不抛出底层的异常。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/05/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Failsafe的含义
  • 2.Failsafe的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档