avatar

目录
.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

或者高端一点:

powershell
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


评论