2018年3月

0x01 FailFast 快速失败策略

最常见也是最简单的的策略,只执行一次,如果成功就返回,失败则抛出异常。
常用于非幂等的写操作。

0x02 FailOver 失败重试策略

也是很常见的策略,执行如果成功就返回,如果失败,换另外一个invoker来执行,重试N次,如果N次后依然失败,抛出异常。
最常用的查询就会使用这种策略,缺点是不断重试会造成请求延迟。

0x03 FailSafe 安全失败策略

前面两种是最常见的两种HA策略了,Dubbo和Motan中都有。
只执行一次,如果成功就返回,失败的话记录错误信息,忽略错误,不抛出异常,返回空响应或空结果。
这种策略保证调用不会出错,用于一些对异常不敏感的操作,比如记录日志。

0x04 FailBack 失败定时重试策略

只执行一次,如果失败记录错误信息,并且会定时重试该请求,返回空响应或空结果。
这种策略通常用于对时效性不高的操作,比如对用户的信息推送。

0x05 Forking 多调用策略

选择一组invokers执行,选择其中成功最快的结果返回,如果都失败,抛出异常。
这种策略同时会调用多个invokers,造成资源的浪费,但是可以大大提高响应速度,适用于对实时性要求高的场景。