规范-多环境与灾难恢复
位置: docs/开发规范/规范-多环境与灾难恢复.md
版本: v1.0
日期: 2026-07-08
关联: AGENTS.md、TDD-00(技术栈方案)、TDD-03(开服自动化)
1. 环境定义
| 环境 |
用途 |
数据 |
暴露范围 |
| dev |
开发调试 |
本地/测试数据 |
开发机/局域网 |
| staging |
预发布测试 |
生产脱敏副本 |
内网 + VPN |
| prod |
生产环境 |
真实玩家数据 |
公网 |
1.1 环境配置分离
docker-compose.dev.yml → 开发环境(热重载、调试端口开放、日志详细)
docker-compose.staging.yml → 预发布(数据隔离、全功能测试、性能监控)
docker-compose.prod.yml → 生产环境(最小化暴露、高可用、限流严格)
- 生产配置(密码/密钥)禁止提交到 git,走环境变量或密钥管理服务(AWS Secrets Manager / HashiCorp Vault)
- Staging 数据定期从生产脱敏同步(用于真实压力测试)
2. 部署策略
2.1 蓝绿部署
[流量 100%] → 蓝环境(当前版本 v1.2.3)
↓ 发版
[流量 0%] → 绿环境(新版本 v1.3.0)← 验证通过
↓ 切换
[流量 100%] → 绿环境(v1.3.0)
[流量 0%] → 蓝环境(待命,可秒级回切)
| 规则 |
说明 |
| 蓝绿双活 |
生产环境两套实例,发版时切换流量 |
| 验证窗口 |
切流量前运行冒烟测试(5 分钟) |
| 秒级回切 |
发现问题立即切回旧版本 |
| 会话保持 |
切换时在线玩家不中断(Nakama 支持) |
2.2 金丝雀发布(可选)
- 先给 5% 玩家发新版,监控 30 分钟无异常后全量
- 用于高风险更新(如战斗公式调整)
3. 灾难恢复
3.1 回滚机制
| 场景 |
回滚方式 |
时间 |
| 代码 bug |
蓝绿切流量 |
< 30 秒 |
| 数据库错误 |
执行 migration down 脚本 |
< 5 分钟 |
| 配置错误 |
Nacos 热更回滚 |
< 10 秒 |
| 热更问题 |
热更包一键回滚 |
< 1 分钟 |
| 全服宕机 |
切换备用集群 |
< 2 分钟 |
3.2 数据库恢复
- 全量备份: 每日 04:00 自动执行,保留 30 天
- 增量备份: 每小时 WAL 归档,保留 7 天
- 时间点恢复(PITR): 可恢复到任意时间点(精度 ±5 分钟)
- 恢复演练: 每季度执行一次灾难恢复演练
3.3 事故处理流程
1. 发现事故 → 立即在运维群告警
2. 判断影响范围 → 决定回滚/热修/降级
3. 执行恢复 → 验证恢复成功
4. 写事故复盘 → 存入 docs/事故复盘/YYYY-MM-DD-标题.md
5. 复盘内容:原因/影响/修复过程/预防措施/Action Items
4. 高可用要求
| 组件 |
高可用策略 |
RTO |
RPO |
| 游戏服 |
多实例 + 负载均衡 |
< 2min |
0 |
| 数据库 |
主从 + 自动故障转移 |
< 5min |
< 1min |
| 缓存 |
Valkey Cluster |
< 1min |
< 1min |
| 配置中心 |
Nacos 集群 |
< 1min |
0 |
| CDN |
多厂商备份 |
< 5min |
0 |
5. 版本记录
- v1.0(2026-07-08): 初始版本,覆盖环境定义、蓝绿部署、灾难恢复、高可用