4.0 KiB
4.0 KiB
P7 四项闭环验收记录
日期:2026-09-21。本文把流程恢复、运行观测、故障/容量和 SDK 接入放在同一次当前提交验收中。所有结果来自本地 Docker、一次性 MySQL 8.4 和 Go 1.27.1;它们证明代码链路可复现,不替代目标生产拓扑的容量、复制切换、RPO/RTO 和发布审批。
1. 真实流程恢复闭环
执行:
make integration
关键结果:
TestIntegrationWorkflowRecovery通过 UNKNOWN 执行核查、步骤结论、继续、任务重试、POLL PENDING、SIGNAL/TIMER 等待恢复、旧证据保护、预算和截止时间保护、审计失败回滚及权限/修订冲突。TestIntegrationWorkflowRuntimeProcess通过控制器全停、两个新进程接管、人工恢复后继续、POLL 同轮恢复和等待代次重建。TestIntegrationWorkflowInstancesSDK通过公共 HTTP 与独立 SDK 的六类恢复命令、流程控制、信号、审计和真实 Worker 执行。- WebSocket 结果交付、ACK 丢失、慢消费者、自然租约重投和跨节点接管均通过;完整 MySQL 集成退出 0。
控制台资源也使用同一公共接口:/console/、/console/app.js、/console/styles.css 返回 200,NEEDS_REVIEW 恢复入口要求当前修订、证据引用、原因、显式确认和幂等键。
2. 指标与告警
执行:
go test ./internal/observability ./cmd/orbit -count=1
docker run --rm --entrypoint /bin/promtool \
-v "$PWD:/work:ro" prom/prometheus:v3.5.0 \
check rules /work/deploy/monitoring/orbit.rules.yml
docker run --rm --entrypoint /bin/promtool \
-v "$PWD:/work:ro" prom/prometheus:v3.5.0 \
test rules /work/deploy/monitoring/orbit.rules.test.yml
结果:指标单元与真实进程采样通过;Prometheus 规则加载 8 条成功,触发、启动宽限、健康不报警、错误恢复和截断恢复测试通过。指标保持独立监听、固定基数、无业务 ID 标签;告警只触发调查,不自动改写任务或流程状态。
3. 故障、备份和容量样本
| 场景 | 命令 | 当前结果 |
|---|---|---|
| MySQL 短暂不可用 | scripts/test-db-recovery.sh |
readiness 在故障时 503,恢复后 200,恢复后任务可受理 |
| 逻辑备份恢复 | scripts/test-backup-restore.sh |
源库/恢复库核心计数一致,schema 28、外键 0、固定观测索引 6 |
| GTID 复制与手工提升 | scripts/test-mysql-replication.sh |
复制同步、源库停止、副本手工提升和原幂等键重放通过;自动切换仍未宣称完成 |
| 集中定时积压 | ORBIT_BACKLOG_RUN_TIMEOUT=20s scripts/test-schedule-backlog.sh |
256 个 occurrence 全部持久化,32 个计划均暂停确认,外键 0;保留有界曲线和指标采样,工具的预期 tool_exit=1 表示到达负向截止样本 |
长时积压样本继续使用 180 秒默认窗口;样本只用于比较积压清空、CPU/RSS、MySQL 资源和连接池曲线,不能直接外推生产吞吐或百万企业容量。
4. SDK 与业务接入
执行:
make sdk-check
make protocol-check
make docs-check
make release-local-check
结果:SDK 独立 module、GOWORK=off、竞态测试、vet、全包构建、协议版本检查和 149 个 Markdown 本地链接均通过;公共 SDK 的流程恢复、事件消费、Outbox/Inbox、提交回执丢失和 WebSocket 重连已有真实服务示例。新增生产接入闭环,明确 Outbox、HTTP 受理、WebSocket 通知、Inbox 去重、错误分类和上线清单。
5. 仍需目标环境验收
- 生产硬件和混合负载下的 p50/p95/p99、磁盘、锁等待、复制延迟和容量余量。
- 自动故障切换、目标拓扑 RPO/RTO、备份介质和恢复工单。
- 生产监控通知、值班升级、凭据托管、日志脱敏和发布审批。
- 正式标签之间的完整 SDK/服务端双向兼容矩阵。
这些项目继续保留在首版交付清单中,不能用本地回归结果替代。