Files
nexus/wiki/concepts/RPO.md
2026-04-22 04:03:04 +08:00

3.7 KiB
Raw Blame History

title, tags, created
title tags created
RPO (Recovery Point Objective)
devops
disaster-recovery
sre
reliability
data-protection
2026-04-25

RPO (Recovery Point Objective)

RPO (Recovery Point Objective) 是指系统发生故障时,能够接受的最大数据丢失量。它衡量的是数据保护程度——从故障时刻向前追溯,可接受丢失多长时间的数据。

Definition

"RPO is about protecting data. It's measured backwards from the moment of failure." — LaunchDarkly

RPO 是灾备规划的核心指标之一,与 RTO(恢复时间目标)共同构成灾备目标体系。

Key Characteristics

维度 说明
衡量对象 数据丢失量Data Loss Amount
测量方向 从故障时刻向后Backwards追溯
关注点 数据完整性How Much Data Can Be Lost

Example

如果数据库在下午 3 点崩溃,而最后一次备份是下午 2 点,则:

  • RPO = 1 小时:这意味着过去 1 小时内的数据可能丢失
  • 2:00 到 3:00 之间发生的所有事务都面临丢失风险

RTO vs. RPO

RTO 和 RPO 衡量的是不同维度,必须同时优化

场景 RTO 目标 RPO 目标 说明
电商结账 2 分钟 0 秒 必须快速恢复,且不能丢失任何交易
用户分析面板 30 分钟 1 小时 停机可接受,小时级数据丢失也可接受
内部 CRM 4 小时 15 分钟 停机可绕过,但近期客户更新很重要
博客/营销站 2 小时 24 小时 访问者可以等,丢失一天评论可接受

关键:不能只优化其中一个指标。

  • 30 秒一次备份RPO 优秀)但恢复需要 6 小时RTO 极差)= 无效
  • 5 分钟拉起新服务器RTO 优秀)但丢失 4 小时客户数据RPO 极差)= 无效

Feature Flag 对 RPO 的保护

传统回滚Full Deployment Rollback在回滚过程中可能丢失新事务数据。而 Feature Flag 回滚不丢失数据

  • Feature Flag 切换只改变代码执行路径,不触碰数据层
  • Kill Switch 关闭故障功能时,用户正在提交的数据不受影响
  • RPO 在整个 Feature Flag 操作期间始终保持近零

Tiered RPO Targets

Tier 场景 RPO 目标 说明
Critical 支付处理、交易系统 < 1 分钟 不能丢失任何金钱相关数据
Important CRM、客户支持 < 15 分钟 近期客户更新不可丢失
Nice-to-have 文档站、内部工具 < 1 小时 数据可重建或接受丢失

实现手段

方法 RPO 效果 说明
无备份 完全不可接受
每日备份 24 小时 成本低RPO 差
每小时备份 1 小时 中等成本和效果
CDB持续数据保护 秒级 持续复制RPO 接近零
同步复制Active-Active 0 零数据丢失,成本极高

RPO 与 RTO 必须协同

最佳实践是同时设定 RTO 和 RPO并将 Feature Flag / Kill Switch 纳入灾备工具链:

  • RTO 短 → 系统快速恢复
  • RPO 小 → 数据损失少
  • Feature Flag → 两者兼得的性价比方案

Sources