学习笔记
Git
  • C#
  • F#
  • AspNetCore
  • EF Core
  • WPF
  • Tauri
  • IoTDB
  • Redis
  • Docker
  • Kubernetes
  • RabbitMQ
  • 日志

    • NLog的配置文件
Linux
基础设施
  • Vue

    • Vue基础
VS Code的插件与玩法
Rust
Python
  • Maven
  • Spring Boot
实际项目
我的博客
Git
  • C#
  • F#
  • AspNetCore
  • EF Core
  • WPF
  • Tauri
  • IoTDB
  • Redis
  • Docker
  • Kubernetes
  • RabbitMQ
  • 日志

    • NLog的配置文件
Linux
基础设施
  • Vue

    • Vue基础
VS Code的插件与玩法
Rust
Python
  • Maven
  • Spring Boot
实际项目
我的博客
  • 基础部分

    • Asp.Net Core在启动时干了什么
  • 鉴权授权

    • 认证与授权
    • 一个最简单的认证示例
    • 一个简单的鉴权、授权
    • /reference/config.html
  • 好库推荐

    • Polly优雅地处理重试、熔断降级
  • 经验分享

    • .Net使用微信支付

通过Polly优雅地处理重试、熔断降级

当需要在项目中请求外部项目时,就不可避免的需要考虑服务故障、网络故障等问题,Polly提供了这种问题的优雅解决方案

Polly的功能

  • 失败重试
  • 服务熔断
  • 超时处理
  • 舱壁隔离
  • 缓存策略
  • 失败降级
  • 组合策略(将上面的策略组合起来)

在Asp.Net Core中需要安装3个包

包名描述
PollyPolly的核心包
Polly.Extensions.HttpPolly基于Http的一些扩展
Microsoft.Extensions.Http.PollyPolly基于HttpClient factory的一些扩展

Polly的使用步骤

  • 定义要处理的异常类型或返回值

  • 定义要处理的动作(重试、熔断、降级响应等)

  • 使用定义的策略来执行代码

不同场景下的策略选择

  • 适合失败重试的场景
    • 服务“失败”是短暂的,可自愈的
    • 服务是幂等的,重复调用不会有副作用
    • 例:网络闪断、部分服务节点异常
    • 最佳实践:设置失败重试次数、设置带有步长策略的失败等待间隔、设置降级响应、设置断路器



Last Updated:
Contributors: 吴俊城