Skip to content

高可用类场景题

概述

高可用(High Availability, HA)是衡量系统可靠性的重要指标。本类别涵盖容灾、降级、灰度发布等保障系统稳定性的核心技术。

核心知识点

高可用架构

  • 主从架构
  • 主备架构
  • 异地多活
  • 同城双活

容错机制

  • 故障检测
  • 自动切换
  • 熔断降级
  • 限流保护

发布策略

  • 蓝绿部署
  • 灰度发布
  • 金丝雀发布
  • 滚动更新

题目列表

如何设计异地多活架构

难度: 专家
标签: 异地多活、数据同步、流量调度
考察点: 架构设计、数据一致性、容灾能力

异地多活是最高等级的容灾方案,需要在多个地域同时提供服务。

核心难点:

  • 如何实现数据同步?
  • 如何调度流量?
  • 如何解决数据冲突?
  • 如何保证一致性?

技术方案:

  • 数据同步(DTS、Canal)
  • 流量调度(DNS、GSLB)
  • 冲突解决(Last Write Wins、CRDTs)
  • 最终一致性

相关技术栈:


如何设计服务降级系统

难度: 高级
标签: 降级策略、熔断、限流
考察点: 降级设计、自动化、监控

服务降级是保护核心系统的重要手段,在系统压力大时主动放弃非核心功能。

核心难点:

  • 如何识别核心链路?
  • 如何自动降级?
  • 如何降级非核心功能?
  • 如何快速恢复?

技术方案:

  • 降级开关
  • 熔断器(Hystrix、Sentinel)
  • 限流保护
  • 服务分级

相关技术栈:


如何设计灰度发布系统

难度: 高级
标签: 灰度发布、流量切分、回滚
考察点: 发布策略、风险控制

灰度发布通过逐步放量降低新版本上线风险。

核心难点:

  • 如何切分流量?
  • 如何监控效果?
  • 如何快速回滚?
  • 如何自动化灰度?

技术方案:

  • 流量切分(按用户、按比例)
  • 版本管理
  • 监控验证
  • 自动回滚

相关技术栈:


如何设计数据备份与恢复

难度: 高级
标签: 数据备份、灾难恢复、RPO/RTO
考察点: 备份策略、恢复能力

数据备份是容灾的基础,需要在成本和恢复能力间权衡。

核心难点:

  • 如何设计备份策略?
  • 如何保证备份可用?
  • 如何快速恢复?
  • 如何验证备份?

技术方案:

  • 全量备份 + 增量备份
  • 冷备份 vs 热备份
  • PITR(Point-In-Time Recovery)
  • 异地容灾

相关技术栈:


如何实施混沌工程

难度: 专家
标签: 故障注入、容错验证、韧性
考察点: 混沌实验、故障恢复

混沌工程通过主动注入故障验证系统的容错能力。

核心难点:

  • 如何设计混沌实验?
  • 如何控制爆炸半径?
  • 如何自动验证恢复?
  • 如何常态化演练?

技术方案:

  • 故障注入(网络、CPU、内存、磁盘)
  • 爆炸半径控制
  • 自动回滚
  • 常态化演练

相关技术栈:

学习路径

初学者(P5-P6)

推荐顺序

  1. 数据备份与恢复 → 理解容灾基础
  2. 服务降级 → 学习降级策略
  3. 灰度发布 → 掌握发布流程

进阶者(P6-P7)

推荐顺序

  1. 异地多活 → 理解高可用架构
  2. 完整的降级系统 → 自动化降级
  3. 灰度发布系统 → 风险控制

高级工程师(P7-P8)

推荐顺序

  1. 大规模异地多活 → 全球化部署
  2. 混沌工程实践 → 韧性建设
  3. 全链路压测 → 容量规划

技术要点总结

高可用等级

等级可用性年故障时间实现方案
2个999%3.65天单机部署
3个999.9%8.76小时主从架构
4个999.99%52.56分钟同城双活
5个999.999%5.26分钟异地多活

容灾级别

级别RTORPO成本方案
冷备小时级小时级定期备份
温备分钟级分钟级主从同步
热备秒级秒级双活架构
多活00极高异地多活

降级策略

策略说明示例
功能降级关闭非核心功能关闭推荐、评论
服务降级降低服务质量降低搜索精度
读降级返回兜底数据返回缓存数据
写降级异步处理日志异步写入

常见问题

Q: 如何计算系统可用性?

A:

可用性 = MTBF / (MTBF + MTTR)

MTBF: 平均故障间隔时间
MTTR: 平均故障恢复时间

例如:
MTBF = 30天 = 720小时
MTTR = 1小时
可用性 = 720 / (720 + 1) = 99.86%

Q: 异地多活如何解决数据冲突?

A:

  • 避免冲突:按地域分片,同一数据只在一个地域可写
  • Last Write Wins:按时间戳,最后写入的生效
  • CRDTs:冲突无关数据结构
  • 手动介入:记录冲突,人工处理

Q: 如何选择降级策略?

A:

  1. 识别核心链路:确定必须保证的功能
  2. 分级服务:P0核心、P1重要、P2普通
  3. 制定降级预案:每个服务的降级方案
  4. 演练验证:定期演练降级流程

相关技术栈

面试技巧

回答框架

  1. 理解需求(2分钟)

    • 可用性目标(几个9)
    • 业务影响
    • 成本约束
  2. 架构设计(10分钟)

    • 部署架构
    • 容灾方案
    • 降级策略
    • 监控告警
  3. 细节讨论(8分钟)

    • 故障检测
    • 自动切换
    • 数据一致性
    • 恢复验证
  4. 成本分析(5分钟)

    • 资源成本
    • 维护成本
    • ROI分析

提示:高可用设计的核心是权衡。更高的可用性意味着更高的成本,要根据业务价值选择合适的方案。面试中要能说清楚不同方案的成本和收益。

正在精进