Polly 提供了多种弹性策略:
Policy | Premise | Aka | How does the policy mitigate? |
---|---|---|---|
Retry 重试 (policy family) deep | 有相当比例的错误是暂时性的,可以在很短的时间内自我恢复。 | "Maybe it's just a blip" 也许只是抖动一下 | 允许配置自动化重试。 |
Circuit-breaker 熔断 (policy family) deep | 当系统很严重吃力的时候快速失败比让用户或调用者等待更好。保证系统从过载的状态中恢复。 | "Stop doing it if it hurts" 痛了就放手 "Give that system a break" 做个了断吧 | 可以预定义阈值来触发熔断。 |
Timeout 超时 deep | 即使等待也不太可能返回一个成功的结果 | "Don't wait forever" 不要一直等下去 | 确保调用者在超时之后就不用继续等待了。 |
Bulkhead Isolation 隔离舱 deep | 当处理失败时,多个失败的救援会淹没主机上的其他资源(如 threads/CPU)。一个失败下游的系统应该能够"backed-up" 失败的上游。这两种失败的处理都会影响更多系统。 | "One fault shouldn't sink the whole ship" 一个船舱漏水不应该沉掉整艘船 | 将动作限制在一个固定的资源范围内,隔离它不会影响其他人。 |
Cache 缓存 deep | 有相当比例的请求都相似 | "You've asked that one before" 你之前问过了同样的问题 | 从缓存中提供响应。当首次响应时自动化存储响应。 |
Fallback 撤退 deep | 当失败一时半会无法恢复,应该有个后备的撤退计划。 | "Degrade gracefully" 优雅地降级 | 当失败时返回一个替代的值,或者其他可以执行的动作 |
PolicyWrap 策略包装 deep | 不同的失败需要不同的策略,弹性意味着可以将它们组合起来使用。 | "Defence in depth" 深度防御 | 允许任意组合以上的策略 |
作者:tairan
链接:https://www.jianshu.com/p/98707fde8061
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。