如何设计故障容错的系统?
高可用面试题发布于
一、冗余
- 多实例部署,避免单点。
- 数据多副本(主从、集群)。
- 多机房部署。
二、故障检测
- 心跳检测,快速发现故障。
- 全链路监控,告警。
三、故障转移
- 自动切换(哨兵、集群选主)。
- 手动切流(流量调度)。
四、降级
- 非核心功能降级,保核心。
- 返回兜底数据。
五、熔断
- 下游故障快速失败,防止雪崩。
六、限流
- 保护自身不被打垮。
七、回滚
- 发布支持快速回滚。
- 数据变更可回滚。
八、预案
- 故障演练,定期验证。
- 应急手册。
九、关键原则
- 故障不可避免,要假设任何组件都会挂。
- 优先保证核心链路可用。
- 能自动恢复的不人工介入。