通过Polly优雅地处理重试、熔断降级
当需要在项目中请求外部项目时,就不可避免的需要考虑服务故障、网络故障等问题,Polly提供了这种问题的优雅解决方案
Polly的功能
- 失败重试
- 服务熔断
- 超时处理
- 舱壁隔离
- 缓存策略
- 失败降级
- 组合策略(将上面的策略组合起来)
在Asp.Net Core中需要安装3个包
包名 | 描述 |
---|---|
Polly | Polly的核心包 |
Polly.Extensions.Http | Polly基于Http的一些扩展 |
Microsoft.Extensions.Http.Polly | Polly基于HttpClient factory的一些扩展 |
Polly的使用步骤
定义要处理的异常类型或返回值
定义要处理的动作(重试、熔断、降级响应等)
使用定义的策略来执行代码
不同场景下的策略选择
- 适合失败重试的场景
- 服务“失败”是短暂的,可自愈的
- 服务是幂等的,重复调用不会有副作用
- 例:网络闪断、部分服务节点异常
- 最佳实践:设置失败重试次数、设置带有步长策略的失败等待间隔、设置降级响应、设置断路器