3. 灾备架构概述:主备、双活、多活架构下的缓存部署模式

在平台门户的灾备体系中,缓存层(Redis / Redis Cluster / 自研 KV)的部署模式直接决定了故障切换速度、数据一致性等级与整体吞吐能力。不同灾备架构对缓存的读写路径、同步机制、故障转移策略有本质差异。本节从主备、双活、多活三种典型架构出发,分析缓存层的部署模式与通信机制。

3.1 主备架构下的缓存部署

主备(Active-Standby)是最基础的灾备模式,缓存层通常采用 一主一从 或 一主多从 的复制拓扑。主节点承载全部读写流量,备节点实时同步数据,仅在主节点故障时提升为新的主节点。

关键特征: 主节点写入后异步或半同步复制到备节点;故障切换由哨兵(Sentinel)或编排工具(如 Keepalived + VIP)触发;切换期间存在秒级不可用窗口。

3.1.1 部署拓扑与数据流

主备架构缓存部署拓扑 Redis 主节点 读写流量 Redis 备节点 只读 / 热备 Sentinel 集群 应用客户端 异步复制 监控 / 故障切换 读写请求

3.1.2 主备模式适用场景与局限

维度说明
适用场景中小规模门户、成本敏感、允许秒级故障切换、RPO 容忍异步复制丢失
RPO异步复制下可能丢失最近写入(秒级数据);半同步复制可降至接近零
RTO哨兵自动切换 5~15 秒;手动切换 1~5 分钟
缓存一致性主备切换后,旧备节点可能缺失部分数据,需配合缓存预热或惰性加载
资源利用率备节点仅承担只读或空闲,资源浪费约 50%
避坑提示: 主备架构下,如果应用层直接连接主节点 IP,故障切换后需要更新连接配置。务必使用 VIP + Keepalived 或 Sentinel + 客户端哨兵感知 模式,避免手动修改连接字符串。

3.2 双活架构下的缓存部署

双活(Active-Active)模式下,两个数据中心同时承担读写流量,缓存层需要在两地之间保持数据最终一致。常见的部署方案包括 Redis 双向复制 和 CRDT(Conflict-free Replicated Data Types) 缓存。

3.2.1 双向复制与冲突处理

Redis 原生不支持双向复制,通常通过中间件(如 Redis Enterprise、自研 Proxy)或 CRDT 改造实现。写入任一中心的数据会异步同步到对端,遇到写冲突时采用 最后写入者获胜(LWW) 或 自定义合并策略。

双活架构缓存双向复制 数据中心 A Redis 集群 A 读写本地 同步代理 A 数据中心 B Redis 集群 B 读写本地 同步代理 B 异步双向同步 冲突检测 + LWW 客户端 A 客户端 B

3.2.2 双活缓存的关键挑战

  • 写冲突: 同一 Key 在两地同时写入,需定义合并策略(LWW / 增量合并 / 业务自定义)。
  • 同步延迟: 跨数据中心网络延迟(通常 10~50ms)导致数据短暂不一致,需业务层容忍。
  • 环路复制: 防止 A→B→A 的无限循环,同步代理必须携带源标记或 TTL 防环。
  • 数据一致性等级: 双活缓存通常只能保证 最终一致性,不适合强一致性场景。
工程建议: 双活缓存适合 用户会话、商品详情、配置信息 等允许最终一致的数据。对于库存、余额等强一致数据,建议采用 主备 + 分布式锁 或 全局一致性协议。

3.3 多活架构下的缓存部署

多活(Multi-Active)架构在三个及以上数据中心同时提供读写服务,缓存层需要更复杂的 分布式一致性协议 或 无冲突数据类型(CRDT) 支持。典型方案包括 Redis Enterprise 多活(CRDB)、DynamoDB 全局表 以及自研的 一致性哈希 + 异步复制 方案。

3.3.1 多活缓存拓扑

多活架构缓存部署(三中心) 数据中心 1 Redis CRDB 节点 同步引擎 数据中心 2 Redis CRDB 节点 同步引擎 数据中心 3 Redis CRDB 节点 同步引擎 全局负载均衡 / 路由 全球用户请求

3.3.2 多活缓存一致性模型

一致性模型实现方式适用场景
最终一致性CRDT / 异步复制 + 冲突合并用户资料、商品信息、配置
因果一致性向量时钟 + 版本向量社交动态、评论系统
读己之写会话粘滞 + 本地优先读取购物车、用户会话
强一致性全局 Paxos / Raft(性能代价高)库存扣减、金融交易(通常不放在缓存层)

3.4 三种架构对比总结

维度主备双活多活
数据中心数22≥3
读写能力单点读写两地同时读写多地同时读写
RTO5~15 秒<1 秒(客户端切换)<1 秒(路由切换)
RPO秒级数据丢失接近零(冲突合并)接近零(CRDT)
一致性强一致(主节点)最终一致最终 / 因果一致
部署复杂度低中高
资源利用率50%100%100%
典型缓存方案Redis + SentinelRedis Enterprise CRDBRedis CRDB / 自研 CRDT
选型建议:
  • 业务对 RTO < 10秒、RPO 可容忍秒级丢失 → 主备 + Sentinel 即可。
  • 需要 两地同时读写、RTO < 1秒、允许最终一致 → 双活 CRDB。
  • 全球多区域部署、用户就近接入、数据冲突可合并 → 多活 CRDT 方案。
  • 强一致性缓存需求 → 优先考虑主备 + 分布式锁,或直接使用数据库层保证。

3.5 缓存巡检在灾备架构中的关注点

无论采用哪种灾备架构,缓存命中巡检都需要针对不同部署模式调整监控指标与巡检策略:

  • 主备架构: 重点巡检主节点内存碎片率、备节点复制延迟(Replica Lag)、哨兵健康状态。
  • 双活架构: 增加冲突率(Conflict Rate)、同步队列积压、跨中心网络延迟。
  • 多活架构: 关注全局时钟偏差、CRDT 合并效率、版本向量膨胀情况。
  • 通用指标: 缓存命中率、逐出率(Eviction Rate)、过期 Key 占比、连接数水位。
巡检自动化建议: 将上述指标纳入 Prometheus + Grafana 监控面板,设置多级告警阈值。例如:主备复制延迟 > 5 秒触发 Warning,> 30 秒触发 Critical;双活冲突率 > 1% 触发检查。