Files
orbit/docs/reports/phase-6-workflow-load.md

5.3 KiB
Raw Blame History

P6 Weave 流程执行测量

验证日期:2026-09-20,最终运行 UTC 06:05–06:06。一次性 MySQL 8.4.10 中的隔离正确性与阶段耗时样本,P6/P7 仍进行中,不作为生产容量或高可用验收。

本轮修正

原测量按每个实例的处理器总调用数核对两个分支,对重复分支、任务身份和本次发布版本的约束不足;输出中序号0还可能由缺失字段被解码为零值。本轮改为精确链路核对:

  • 发布回执必须匹配命名空间、定义身份、完整规范;实例绑定本次发布的不可变版本ID,输入和首次绝对截止不变。
  • 步骤精确为 pair:PARALLEL、left:TASK、right:TASK,全部成功,步骤和激活身份唯一;左右分支必须关联不同任务。
  • 任务的队列、命名空间、处理器、策略、输入/结果、固定截止与时间顺序一致,每任务恰有一个成功尝试;来源匹配该实例、版本、步骤键和激活。
  • 每个已核验任务对应本地同一尝试的一次调用。一个分支执行两次不能抵充另一个分支;尚不能关联的调用单独报告。
  • 精确JSON字段集合拒绝缺字段、null、重复键、大小写别名和尾随JSON,序号0也必须明确提供。
  • 发布的流程及任务时限使用 run-timeout,移除原工具中未公开的30秒截断;报告增加每个启动请求的原键、实例ID、受理错误及核验标记。

此前24实例记录没有形成最终源码与所运行二进制的可靠对应,不能用于证明本轮实现。当前原始样本已由重新构建的二进制运行并替换旧证据;旧内容可从Git历史追溯。本轮环境清单同时保存源码、实际二进制及原始结果哈希,构建后没有修改这些源码。

实际结果

工具通过独立 SDK 创建定义、发布固定 v1、启动流程,用2个真实 Worker回显固定输入,随后逐项读取流程、步骤、任务、尝试与来源。任务最多一次尝试、RECONCILE_ONLY,处理器无外部副作用。任何写请求都不由工具自动重试,队列额度只读。

样本 请求/受理 持久核验成功/未核验 本地调用 重复/未确认调用 完整/退出码
24实例,90秒截止 24/24 24/0 48 0/0 true / 0
100实例,90秒截止 100/100 100/0 200 0/0 true / 0
24实例,2秒截止 24/24 2/22 4 0/0 false / 1

原始结果:24实例、100实例、截止负例。两组正常样本错误集合为空;负例报告 RUN_TIMEOUT=1、VERIFY_TIMEOUT=22,22个实例保留原身份且未算成功。截止后只停止本地 Worker,不取消服务器实例;该快照不证明未核验工作已撤销或最终失败。

正常样本 受理往返P50/P95/P99 数据库实例创建至完成P50/P95/P99
24实例 47.694 / 56.059 / 64.540ms 7874.268 / 12805.768 / 12816.559ms
100实例 65.156 / 70.222 / 71.857ms 23486.790 / 39126.668 / 42091.211ms

100实例样本中最长流程持久耗时42101.309ms,超过旧工具的30秒隐藏上限,在此次90秒配置下仍正确完成。分布只统计完整核验成功实例,不混入客户端轮询等待;该观察不能推导目标生产吞吐。

环境、回归及复现

单节点 Orbit、一次性 MySQL 8.4.10,1个负载进程中2个Worker。队列并发4、每秒授权10,工具不改额度。24/100正常组请求并发分别6/8,每Worker容量4;负例并发6、每Worker容量2。每次HTTP截止5秒,轮询100毫秒。指标关闭,容器共享本机Docker VM,无独占CPU/内存限制;Go进程与MySQL共享网络命名空间,仅回环通信,无宿主机发布端口。

实际工具链为 Go 1.25.14 Linux arm64,通过临时modfile使用;仓库声明的Go 1.27.1未改。SDK全模块 go test -race ./...、go vet ./...、go build ./... 通过,见检查日志。新增回归覆盖:发布版本替换、精确步骤/激活/任务身份、错误任务策略/队列/截止、缺失/额外尝试、错误来源和时间顺序、并发本地调用、同一分支重复不能抵充第二分支,以及序号0的严格字段解析。

真实样本后 orbit-admin verify 确认schema version28、28条迁移记录、6个必需索引及外键0,见结构核验。本轮没有修改数据库模型或迁移。

精确参数、工具链、资源和源码/二进制/结果哈希见环境清单。按调用手册准备一次性数据库和带 workflow-access、workflow-run-access、worker-access 的隔离凭据,使用当前源码重新构建工具,再运行环境清单中的三组参数;退出码应为0、0、1。标准 scripts/test-mysql.sh 保留6实例回归入口,本轮未重跑整份集成脚本。

长期积压已有独立积压与曲线样本,本批不覆盖目标Go 1.27.1标准全量、跨标签SDK/服务端兼容矩阵、多节点吞吐、跨故障域恢复、生产连接池容量、RPO/RTO或发布审批;这些门槛继续按P6/P7完成。