lawless-design/docs/00_项目概述/开发规范/规范-多环境与灾难恢复.md
2026-07-09 14:39:17 +08:00

3.2 KiB

规范-多环境与灾难恢复

位置: 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.02026-07-08: 初始版本,覆盖环境定义、蓝绿部署、灾难恢复、高可用