Back to skills
extension
Category: Data & AnalyticsNo API key required

运营数据口径审计

对齐运营报表中的指标定义、事件来源、去重规则、时间窗口、组织范围与分母。专门发现同名指标不同口径、排行榜分母错误和页面数字无法追溯等问题。

personAuthor: u_306634a0hubenterprise

单机 Docker 蓝绿发布

本技能面向资源有限但需要降低发布中断的单机部署。它不引入 Kubernetes,而是用两个应用槽位、一个活动上游和明确状态文件建立最小可控发布闭环。

何时使用

  • 单台云服务器运行 Docker Compose + Nginx 应用。
  • 当前发布会重建/重启唯一应用容器,造成用户中断。
  • 需要候选版本验证、原子切流、自动回滚和更新提示。
  • 需要评估数据库迁移对零停机的影响。

不适用于服务器资源无法同时运行两个实例;此时应选择滚动重启、短维护窗或扩容。

最小拓扑

  • app_blueapp_green:相同镜像协议,不同端口/容器名。
  • Nginx:只把公网流量转发给活动槽位。
  • 共享依赖:数据库、对象存储和必要的应用密钥。
  • 状态文件:activecandidateprevious,记录版本、槽位和端口。
  • 发布脚本:Stage、Promote、Rollback 三个独立动作。

工作流程

1. 评估前置条件

确认 CPU、内存、磁盘、端口、镜像构建时间、会话存储、文件上传、后台任务和 WebSocket。先做容量验证,再承诺零停机。

2. 定义发布契约

Stage: 启动非活动槽位 → 迁移/准备 → 内网健康与冒烟 → 标记 candidate
Promote: 再次健康检查 → 原子更新 Nginx 上游 → reload → 连续性探测 → 标记 active
Rollback: 恢复 previous 上游 → reload → 健康检查 → 标记状态

3. 设计健康检查

健康检查至少区分:进程存活、依赖就绪、关键只读查询和版本号。不要用首页 200 代替全部健康。

4. 审查数据库迁移

使用 expand/contract:先增加兼容结构,再部署兼容新旧结构的应用,最后在旧版本退出后清理。不可逆迁移必须有备份、验证和独立回滚方案。

5. 处理共享状态

两个槽位必须共享相同认证密钥、上传存储和必要缓存。后台任务需防止双实例重复消费,使用 leader、队列或显式开关。

6. Stage 候选版本

在非活动端口启动,检查容器状态、应用版本、数据库连接、关键路由、静态资源和日志。Stage 失败不得影响活动槽位。

7. Promote 与连续性探测

切流前后持续探测关键公开路由,记录 5xx、延迟和连接错误。只有 Promote 成功后才写入更新通知或版本可用状态。

8. Rollback 演练

在非生产或低风险窗口实际演练一次回滚。确认状态文件、Nginx 配置和旧容器仍可用。数据库不兼容时,应用回滚不等于完整回滚。

输出格式

# 单机蓝绿发布方案
当前拓扑:
容量结论:可行 / 需扩容 / 不建议

## Stage
- ...
## Promote
- ...
## Rollback
- ...

## 风险表
| 风险 | 触发条件 | 检测 | 回退 |

## 验收
| 检查项 | 阈值 | 证据 |

质量门槛

  • Stage 失败不会改动活动流量。
  • Promote 使用原子配置变更并能立即回退。
  • 数据库迁移兼容新旧两个应用版本。
  • 更新通知只在 Promote 成功后出现。
  • 至少有一次真实的连续性探测和回滚演练。
  • 不把单机蓝绿描述为机器级高可用;主机故障仍是单点风险。