1. 离线数据同步需求分析:业务场景、离线优先级、数据一致性目标
离线数据同步是现代分布式应用的基石。在移动端、IoT 边缘节点、零售终端或远程办公场景中,网络不可用或高延迟是常态。本章从三个维度拆解需求,帮助团队在同步方案设计前精准定义边界条件。
1.1 核心业务场景
离线同步不是简单的“断网后缓存数据”,不同场景对同步的实时性、数据量和冲突处理要求截然不同。下表列举四种典型场景及其特征:
| 场景 | 网络模式 | 数据变更频率 | 典型冲突类型 |
|---|---|---|---|
| 移动办公(文档协作) | 间歇连接 | 中 | 版本合并(如编辑同一段落) |
| 零售 POS | 每日结算后连接 | 高(交易记录) | 订单唯一性 & 库存扣减 |
| IoT 传感器网络 | 窄带宽、间歇 | 极高(每秒采集) | 时间戳顺序 & 数据压缩 |
| 现场服务(工单系统) | 远离基站 | 低(状态变更) | 状态跳变 & 资源预占用 |
1.2 离线优先级划分
并非所有数据都需要“断网即同步”。根据业务影响与用户等待容忍度,数据通常划分为三个优先级:
- P0 – 必须实时同步:用户关键操作(支付、身份验证、订单创建)。延迟超过 2 秒会导致业务失败。
- P1 – 可延迟同步:非关键状态变更(已读标记、历史记录)。允许在网络恢复后 1 分钟内完成。
- P2 – 后台批量同步:全量缓存、日志、统计数据。仅在 WiFi 或空闲时同步,不参与冲突检测。
实践提示:建议使用配置文件(如 JSON 或 YAML)显式定义优先级,而非硬编码。例如:
{
"sync_priority": {
"payment_confirm": { "level": "P0", "method": "realtime" },
"user_preference": { "level": "P1", "delay_max_sec": 60 },
"analytics_batch": { "level": "P2", "trigger": "wifi_only" }
}
}
1.3 数据一致性目标
根据 CAP 理论和业务容忍度,离线同步必须在可用性、分区容错性与一致性之间做出选择。常见一致性模型:
| 模型 | 说明 | 适用场景 |
|---|---|---|
| 最终一致性 | 所有副本最终达到相同状态,允许中间不一致 | IoT 传感器数据、用户阅读记录 |
| 因果一致性 | 若 A 导致 B,则看到 B 必须同时看到 A | 聊天消息、评论回复 |
| 读己之写一致性 | 用户总能读到自己的最新写入 | 个人设置、草稿箱 |
| 强一致性 | 写入后立即读取最新值(通常需要分布式锁或共识) | 支付余额、库存扣减 |
⚠ 重要权衡:强一致性会显著降低离线可用性和同步吞吐量。大多数离线场景优先选择最终一致性 + 因果一致性组合,仅在关键业务中使用“读己之写”或短时强一致性窗口。
1.4 需求分析决策流程
下图展示了从业务场景到一致性目标再到同步策略的典型决策链路。分析时需反复迭代,不可跳过中间步骤。
1.5 需求分析输出清单
完成本章分析后,应产出以下文档产物,作为后续章节设计的基础:
- 业务场景列表(至少 3 个),附带数据量级与网络特征
- 数据优先级矩阵(P0/P1/P2 分类表)
- 一致性目标选型表(每个场景对应的一致性模型)
- 冲突类型与频率预估(为第 4 章冲突解决提供输入)
需求分析是离线同步项目的“地基”。地基不牢,后续的冲突检测、增量同步、UI 一致性都会出现系统性缺陷。