高可用、备份、RTO 与 RPO
高可用减少日常故障造成的中断,备份保留可恢复的数据副本,RTO 和 RPO 则规定灾难发生后需要恢复到什么程度。
1. 高可用覆盖常见故障
高可用系统通过冗余和故障转移应对可预期的组件故障,例如进程退出、主机损坏或单个可用区失效。设计时先列出故障域:
- 进程和主机;
- 机架与电源;
- 可用区和地域;
- 网络、DNS 与证书;
- 数据库、消息系统和外部供应商;
- 错误配置与软件发布。
同一机房部署两个实例只能覆盖部分进程和主机故障。两个实例共享数据库、交换机或错误配置时,仍然存在共同故障点。
2. 冗余需要可工作的接管路径
增加副本只是第一步。系统还需要健康判断、流量切换、状态同步和容量余量。接管路径要回答:
- 谁判断主节点不可用;
- 如何避免两个主节点同时写入;
- 备用节点的数据落后多少;
- 故障后剩余容量能否承接峰值;
- 客户端、连接池和 DNS 多久感知切换。
自动切换适合检测准确、动作可逆且频繁出现的故障。涉及数据丢失风险或跨地域切换时,可以保留人工确认,但操作必须有经过演练的 runbook。
3. 备份应对复制无法解决的问题
复制会把删除、错误更新和加密破坏迅速传播到副本。备份保存独立时间点的数据,用于恢复逻辑损坏、勒索攻击和长时间未发现的数据错误。
备份策略要规定:
- 全量、增量或日志备份的频率;
- 保存期限与版本数量;
- 是否跨账号、跨地域或离线保存;
- 加密、密钥和访问审计;
- 完整性校验和恢复测试;
- 数据库之外的配置、对象存储和密钥材料。
备份任务显示成功,只能证明文件被写出。只有在隔离环境中完成恢复并校验业务数据,才能证明备份可用。
4. RPO 限制可接受的数据丢失
RPO(Recovery Point Objective)描述灾难后可以接受恢复到多早的数据点。RPO 为 15 分钟,意味着业务最多接受约 15 分钟的数据变化丢失。
RPO 会影响复制和备份方案:
- 每日备份无法满足分钟级 RPO;
- 异步跨地域复制的实际 RPO 取决于复制延迟;
- 同步复制可以降低 RPO,但会增加写延迟和跨地域故障耦合;
- 业务日志、消息和外部流水可能用于灾后补录。
不同数据可以使用不同 RPO。支付账务可能接近零,推荐缓存可以接受重新生成。
5. RTO 限制恢复时间
RTO(Recovery Time Objective)描述从故障发生到业务恢复到约定水平的最长时间。它包括发现、决策、基础设施准备、数据恢复、应用启动、验证和流量切换。
RTO 越短,通常需要越多预置资源和自动化:
- 备份恢复:成本较低,恢复时间较长;
- 最小运行环境:保留关键数据与核心组件,灾难时扩容;
- 温备:异地持续运行缩小版环境;
- 多站点运行:两地同时承载或随时接管,成本和一致性要求最高。
选择方案时应从业务 RTO/RPO 反推,避免先购买双活架构,再寻找使用理由。
6. 恢复顺序来自依赖图
完整恢复不只启动应用。通常需要按顺序处理:
- 身份、网络、DNS、证书和密钥;
- 数据库、对象存储、消息系统和配置中心;
- 核心写入服务;
- 查询、搜索和异步消费者;
- 非核心后台任务与报表。
每一步都要定义可验证的完成条件。数据库能连接不代表数据一致;服务健康检查通过不代表用户能完成支付。恢复验证应包含业务探针、数据校验和外部依赖检查。
7. 用演练测量真实目标
恢复演练要记录实际恢复点和恢复时间,并与 RPO/RTO 比较。演练至少覆盖:
- 从指定备份恢复到空环境;
- 主区域不可用时切换;
- 密钥、权限或镜像缺失;
- 数据复制落后或损坏;
- 回到正常拓扑的 failback。
演练发现的缺口需要负责人、优先级和复测日期。业务增长、依赖和人员变化后,旧演练结果不能继续代表当前能力。
8. 常见问题
8.1 主从复制是否可以代替备份
不能。复制提高副本可用性,也会复制误删除和逻辑损坏。备份提供独立历史恢复点,两者覆盖的风险不同。
8.2 双机部署是否已经满足容灾
要看两个实例是否跨越目标灾难的故障域,以及数据、网络、配置和接管路径是否独立。部署在同一区域、共享同一数据库的双机,无法覆盖区域灾难。
9. 面试题
9.1 高可用与容灾有什么区别,怎样根据 RTO/RPO 设计方案
出现公司:阿里巴巴
考察重点
- 冗余、故障域、备份和灾难恢复的范围。
- RTO、RPO 对复制、备份和预置资源的约束。
- 恢复顺序、业务验证和定期演练。
相关内容:第 1 节“高可用覆盖常见故障”至第 7 节“用演练测量真实目标”。
参考回答
高可用主要通过同一服务范围内的冗余、健康检查和故障转移降低日常中断;容灾覆盖区域级故障、数据损坏等严重事件,需要独立恢复环境、数据副本和业务恢复流程。备份用于保留历史恢复点,主从复制不能代替它。
我会先按业务数据和功能确定 RPO 与 RTO,再选择备份恢复、最小运行环境、温备或多站点方案。设计要覆盖共同故障点、接管容量、复制延迟、DNS 和依赖恢复顺序。最后通过从空环境恢复、区域切换和 failback 演练测量真实 RPO/RTO,并用业务探针和数据对账确认恢复有效。