这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
完整架构
完整的异地容灾系统不是单个技术组件,而是一套覆盖目标、架构、数据、切换、演练和组织流程的体系:
业务分级 -> RTO/RPO -> 多机房架构 -> 数据同步
-> 健康检查 -> 故障切换 -> 数据校验 -> 回切与复盘
热备容灾架构
一个可落地的热备容灾架构可以这样设计:
┌─────────────────────────────────────────────┐
│ 全局流量调度(GSLB) │
│ 按地域 / 健康状态 / 权重路由 │
└───────────────────┬─────────────────────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 主机房 │ │ 备用机房 │ │ 用户就近访问 │
│ 承载主要写流量 │ │ 同版本服务部署 │ │ 影子/只读流量 │
└────────┬─────────┘ └────────┬─────────┘ └──────────────────┘
│ │
│ 数据复制/日志同步 │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 主数据库 │──▶│ 备数据库 │
│ 缓存 / 消息 │ │ 缓存预热 / 消息 │
│ 对象存储 │──▶│ 跨区域复制 │
└──────────────────┘ └──────────────────┘
各层职责
- 主机房承载主要写流量。
- 备用机房长期部署同版本服务,承载少量影子或只读流量,避免长期空闲导致配置和容量过期。
- 数据库通过日志复制同步到备用机房,监控主备延迟。
- 对象存储开启跨区域复制,文件数据不依赖数据库同步。
- 消息系统保留幂等消费和重放能力,切换后不丢消息、不重复消费。
- 全局流量调度根据健康状态切换入口,同时保证流量调度和数据状态一致(不能把用户切到没有其数据的机房)。
- 监控系统持续观察主备延迟、服务健康和业务指标。
- 容灾预案通过定期演练验证,切流和回切有 Runbook。
故障切换流程
一次主备切换通常包括:
确认故障级别(错误率/网络/数据库不可写/多可用区异常)
↓
冻结或限制主机房写入,避免双写冲突扩大
↓
检查数据同步延迟,评估 RPO
↓
提升备用数据库或服务为主
↓
切换流量到备用机房(DNS/GSLB 生效)
↓
打开必要的降级策略(暂停非核心功能)
↓
验证核心链路:登录、下单、支付、查询
↓
持续观察错误率、延迟和业务指标
回切流程
主机房恢复后不要急着切回:
主备数据重新追平(对账校验)
↓
主机房通过健康检查
↓
切回期间避免双写
↓
切回失败时能重新回到备用机房
指标体系
- 主备复制延迟。
- 最近一次成功同步时间。
- 备用机房服务健康度。
- 全局流量调度状态。
- 核心业务成功率。
- RTO/RPO 演练达标率。
备用机房平时不出问题,不代表事故时可用。只有这些指标持续健康,团队才有切换信心。
