.Net Core微服务架构Polly熔断降级策略
2022-09-19 本文已影响0人
一个很普通的名字
熔断机制(Circuit Breaker),也叫自动停盘机制,是指当股指波幅达到规定的熔断点时,交易所为控制风险采取的暂停交易措施。
具体来说是对某一合约在达到涨跌停板之前,设置一个熔断价格,使合约买卖报价在一段时间内只能在这一价格范围内交易的机制。
之所以叫“熔断”,是因为这一机制的原理和电路保险摊类似,一旦电压异常,保险丝会自动熔断以免电器受损。
Polly是什么
Polly是一个被.NET基金会认可的弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达重试,断路器,超时,隔板隔离和降级等策略。以更友好的方式维护我们的程序。
弹性策略
Polly提供多种策略:
策略 | 适用范围 | 描述 | 效果 |
---|---|---|---|
重试(Retry) | 故障是短暂的,并且可能在短暂延迟后自我纠正。 | “也许这只是昙花一现” | 配置自动重试 |
断路器(Circuit-breaker) | 当系统严重错误时,快速失败比让用户等待更好。 | “如果它受伤就停止这样做” | 当故障超过某个预先配置的阈值时,禁止执行 |
阻塞断路器(Circuit-breaker) | 保护故障系统免于过载可以帮助它恢复。 | “他太累了,让他休息一下” | 当故障超过某个预先配置的阈值时,阻塞执行 |
超时(Timeout) | 超过一定的等待,成功的结果是不可能的。 | “别一直等下去了” | 保证调用者不必等待超时。感觉与当前网关效果一致 |
隔板隔离(Bulkhead Isolation) | 当进程出现故障,多个失败的请求很容易占满服务器资源(线程/CPU)。 | ||
一个处于故障状态的下游系统,也会导致其上游系统故障。 | “一个错误不应该沉没整艘船” | 将严格管控故障进程,使其使用固定大小的资源池,隔离他们对其他进程的潜在影响 | |
缓存(Cache) | 一定比例的请求可能是相似的。 | “你以前问过那个” | 从缓存中提供已知的响应。 |
当第一次读取的时候,将响应自动缓存起来。 | |||
降级(FullBack) | 事情仍然会失败 ,你会做什么。 | “看来还是得你来” | 定义在失败时返回的替代值(或要执行的操作)。 |
包装策略(PolicyWrap) | 不同的故障需要不同的策略 弹性意味着使用组合。 | “一起保护好这个结果” | 允许灵活组合上述任何策略 |
引用Polly
管理Nuget包,搜索Polly:
图片.png或者高端一点:
Install-Package Polly
Polly基础使用
(防止剧透,部分代码由UTF-16编码)
重试策略:
图片.png1.简单使用
图片.png 图片.png 图片.png2.重试策略
图片.png3.降级策略
4.超时策略
图片.png
图片.png5.包装策略
代码地址
https://git.dev.tencent.com/HanBlog/HelloPolly.git