.Net Core微服务架构Polly熔断降级策略

熔断机制(Circuit Breaker),也叫自动停盘机制,是指当股指波幅达到规定的熔断点时,交易所为控制风险采取的暂停交易措施。
具体来说是对某一合约在达到涨跌停板之前,设置一个熔断价格,使合约买卖报价在一段时间内只能在这一价格范围内交易的机制。

之所以叫“熔断”,是因为这一机制的原理和电路保险摊类似,一旦电压异常,保险丝会自动熔断以免电器受损。

Polly是什么

Polly是一个被.NET基金会认可的弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达重试,断路器,超时,隔板隔离和降级等策略。以更友好的方式维护我们的程序。

官方网址:www.thepollyproject.org

开源地址:https://github.com/App-vNext/Polly

弹性策略

Polly提供多种策略:

策略适用范围描述效果
重试(Retry故障是短暂的,并且可能在短暂延迟后自我纠正。“也许这只是昙花一现”配置自动重试
断路器(Circuit-breaker当系统严重错误时,快速失败比让用户等待更好。“如果它受伤就停止这样做”当故障超过某个预先配置的阈值时,禁止执行
阻塞断路器(Circuit-breaker保护故障系统免于过载可以帮助它恢复。“他太累了,让他休息一下”当故障超过某个预先配置的阈值时,阻塞执行
超时(Timeout超过一定的等待,成功的结果是不可能的。“别一直等下去了”保证调用者不必等待超时。感觉与当前网关效果一致
隔板隔离(Bulkhead Isolation当进程出现故障,多个失败的请求很容易占满服务器资源(线程/CPU)。
一个处于故障状态的下游系统,也会导致其上游系统故障。
“一个错误不应该沉没整艘船”将严格管控故障进程,使其使用固定大小的资源池,隔离他们对其他进程的潜在影响
缓存(Cache一定比例的请求可能是相似的。“你以前问过那个”从缓存中提供已知的响应。
当第一次读取的时候,将响应自动缓存起来。
降级(FullBack事情仍然会失败 ,你会做什么。“看来还是得你来”定义在失败时返回的替代值(或要执行的操作)。
包装策略(PolicyWrap不同的故障需要不同的策略 弹性意味着使用组合。“一起保护好这个结果”允许灵活组合上述任何策略

引用Polly

管理Nuget包,搜索Polly:

PollyNuget

或者高端一点:

1
Install-Package Polly

Polly基础使用

(防止剧透,部分代码由UTF-16编码)

重试策略:

1.简单使用

简单使用

2.重试策略

UTOOLS1567835254221.png

UTOOLS1567835317592.png

UTOOLS1567835337994.png

3.降级策略

1567835372451.png

4.超时策略

UTOOLS1567835391802.png

5.包装策略

UTOOLS1567835435697.png

代码地址

https://git.dev.tencent.com/HanBlog/HelloPolly.git