基础内容

定义:系统在面对突发负载或故障时仍能保持正常运行的能力

关键概念

  • 弹性设计(Resilient Design):系统能够自动恢复和调整以应对负载和故障
    • 实现技术
      • 冗余设计
        • 通过多实例、多数据中心等方式实现冗余,确保故障时有备用资源可用
        • 比如:多区域部署,跨数据中心的备份和故障转移
      • 隔离技术
        • 通过将系统分隔成独立的模块,避免故障扩散
        • 示例:使用容器(如 Docker)隔离应用环境,使用虚拟机(如 KVM)隔离操作系统环境
      • 动态调整
        • 根据实时监控的数据自动调整系统资源和配置
        • 工具:Kubernetes 的自动扩展(Horizontal Pod Autoscaler)、AWS 的 Auto Scaling
  • 自动恢复(Self-Healing):系统能够自动检测并恢复故障
    • 实现技术
      • 健康检查
        • 定期检查系统各个组件的健康状态,及时发现故障
        • 工具:Kubernetes 的 Liveness 和 Readiness Probes、AWS ELB
      • 自动重启
        • 在检测到组件故障时,自动重启故障组件
        • 工具:Kubernetes 的自动重启策略(RestartPolicy)、AWS EC2 的自动重启
      • 故障转移
        • 在检测到关键组件故障时,自动将流量切换到备用组件
        • 工具:AWS RDS的多可用区部署(Multi-AZ Deployment)
  • 断路器模式(Circuit Breaker Pattern):防止系统在故障情况下过载
    • 实现方式
      • 保护机制:在系统组件出现故障或响应变慢时,通过断路器模式快速失败,防止故障扩散,保护系统
      • 状态转换:断路器有三种状态:关闭、打开和半开
        • 关闭(Closed):系统正常工作,所有请求通过
        • 打开(Open):检测到故障后,断路器打开,所有请求快速失败
        • 半开(Half-Open):经过一段时间后,断路器进入半开状态,部分请求允许通过,测试系统是否恢复正常
      • 快速失败:在故障发生时,立即返回错误响应,而不是让请求长时间等待,从而保护系统资源
    • 实现技术
      • 断路器库
        • 使用断路器模式库实现断路器功能
        • 工具:Netflix Hystrix、Resilience4j
      • 实时监控和报警
        • 监控系统各组件的状态,及时触发断路器
        • 工具:Prometheus、Grafana。
      • 重试机制
        • 在断路器打开期间,定期尝试恢复请求,确保系统恢复后能够正常运行
        • 实现:Exponential Backoff(指数退避算法)