容错配置最佳实践

容错机制的配置是实践中的难点。本节总结容错配置的最佳实践。

配置检查清单

# 容错配置检查清单
resilience_checklist:
  超时配置:
    - 所有 HTTP 客户端都配置了超时
    - 超时值基于业务需求而非默认值
    - 超时有层次:网关 > 服务 > 数据库

  重试配置:
    - 重试次数不超过 3 次
    - 使用指数退避策略
    - 添加随机抖动
    - 只对瞬时故障重试

  熔断器配置:
    - 每个依赖服务独立配置
    - 失败率阈值合理
    - 熔断器状态有监控

  限流配置:
    - 限流阈值基于容量规划
    - 多维度限流
    - 限流有友好提示

  降级配置:
    - 降级逻辑已测试
    - 降级返回有意义的数据
    - 降级有监控和告警

配置示例

resilience-config.yml
# 容错配置最佳实践示例
resilience:
  # 超时配置
  timeouts:
    default:
      connect: 3000
      read: 5000
    user-service:
      connect: 5000
      read: 3000
    payment-service:
      connect: 3000
      read: 3000

  # 重试配置
  retry:
    default:
      max-attempts: 3
      backoff:
        type: exponential
        base-delay: 1000
        multiplier: 2
        jitter: true

  # 熔断器配置
  circuit-breaker:
    default:
      failure-rate-threshold: 50
      wait-duration: 60s
      sliding-window-size: 10
    payment-service:
      failure-rate-threshold: 30
      wait-duration: 120s

  # 限流配置
  rate-limit:
    global:
      qps: 10000
    user:
      qps: 100
    api:
      "/api/order": 1000
      "/api/payment": 100

常见配置问题

问题错误配置正确配置
超时太长timeout: 30000timeout: 5000
重试太多maxAttempts: 10maxAttempts: 3
无退避重试间隔相同指数退避
无熔断器只依赖超时超时 + 熔断器
无降级异常直接抛给用户降级返回友好提示

本章总结

核心要点

  1. 容错配置要有检查清单:避免遗漏
  2. 每个依赖要单独配置:不能一刀切
  3. 配置要基于实际数据:基于压测和历史数据
  4. 配置要可动态调整:运行时可以修改
  5. 配置要监控和告警:知道什么时候触发容错