基础内容
定义:系统在面对突发负载或故障时仍能保持正常运行的能力
关键概念
- 弹性设计(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(指数退避算法)
- 断路器库
- 实现方式