注: Dubbo版本是2.6.2java
图1 Dubbo的FailsafeClusterInvoker类继承图ide
Failsafe能够理解为出现异常时,直接忽略。能够用在相似写日志之类的,容许必定量信息丢失的地方。spa
核心代码在FailsafeClusterInvoker的doInvoke(Invocation,List<Invoker<T>>,LoadBalance)中,源码以下。日志
@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 } }
比较好理解,重点在于不抛出底层的异常。code