如何设计故障容错的系统?

发布于

一、冗余

  • 多实例部署,避免单点。
  • 数据多副本(主从、集群)。
  • 多机房部署。

二、故障检测

  • 心跳检测,快速发现故障。
  • 全链路监控,告警。

三、故障转移

  • 自动切换(哨兵、集群选主)。
  • 手动切流(流量调度)。

四、降级

  • 非核心功能降级,保核心。
  • 返回兜底数据。

五、熔断

  • 下游故障快速失败,防止雪崩。

六、限流

  • 保护自身不被打垮。

七、回滚

  • 发布支持快速回滚。
  • 数据变更可回滚。

八、预案

  • 故障演练,定期验证。
  • 应急手册。

九、关键原则

  • 故障不可避免,要假设任何组件都会挂。
  • 优先保证核心链路可用。
  • 能自动恢复的不人工介入。