注: 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