fix: bind workflow samples to distinct task execution proofs
This commit is contained in:
@@ -20,16 +20,24 @@ go run ./cmd/orbit-workflow-load \
|
||||
-poll-interval 250ms
|
||||
```
|
||||
|
||||
参数上限是 `requests<=2000`、启动/核验并发 `<=128`、Worker 数 `<=32`、单 Worker 容量 `<=256` 且总容量 `<=1024`。`-timeout` 是单次 HTTP 交换截止,`-run-timeout` 是整次样本截止;两者都不是生产系统的 SLA。
|
||||
参数上限是 `requests<=2000`、启动/核验并发 `<=128`、Worker 数 `<=32`、单 Worker 容量 `<=256` 且总容量 `<=1024`。`-timeout` 是单次 HTTP 交换截止,`-run-timeout` 是整次样本截止;整次测量另有最多5秒 Worker 收尾。发布的流程、任务及尝试时限使用 `run-timeout`,不再隐式缩短为30秒;任务实际截止还受实例首次绝对截止限制。这些限制都不是生产系统的 SLA。
|
||||
|
||||
工具先只读核对队列,不修改队列额度;定义名、实例幂等键、业务键和处理器名都带一次运行生成的随机前缀。每个实例固定使用输入 `{"run_id":"...","sequence":N}`,流程输出必须同时包含 `left` 和 `right` 两个相同对象。
|
||||
工具先只读核对队列,不修改队列额度;创建及发布回执必须匹配命名空间、定义名称和完整规范,实例必须绑定本次发布回执的不可变版本 ID。定义名、实例幂等键、业务键和处理器名都带一次运行生成的随机前缀。每个实例固定使用输入 `{"run_id":"...","sequence":N}`,流程输出必须同时包含 `left` 和 `right` 两个相同对象。
|
||||
|
||||
## 报告解释
|
||||
|
||||
输出为一行 JSON,包含 `attempted`、`accepted`、`verified_success`、`unverified`、`handler_calls`、`worker_started`、`errors` 及 `admission`/`completion` 百分位。`complete=true` 的必要条件是:全部启动调用有唯一回执、全部实例为 `SUCCEEDED`、每个流程恰有两个成功 TASK 步骤、每个任务恰有一次成功尝试、来源固定到同一实例和版本、两倍分支处理器调用全部被确认且没有重复调用。
|
||||
输出为一行 JSON,包含 `attempted`、`accepted`、`verified_success`、`unverified`、`handler_calls`、`unconfirmed_invocations`、`worker_started`、`instances`、`errors` 及 `admission`/`completion` 百分位。`complete=true` 的必要条件是:全部启动调用有唯一回执、全部实例为 `SUCCEEDED`、步骤必须精确为 `pair:PARALLEL`、`left:TASK`、`right:TASK`,全部成功且各自步骤/激活身份唯一;两个分支对应两个不同任务,各有一次成功尝试,来源精确匹配实例、发布版本、步骤键和激活。每个任务必须关联到本地同一尝试的一次调用,不能用同一分支调用两次抵充另一个分支。
|
||||
|
||||
输入/输出按精确字段集合校验,拒绝重复键、大小写别名、缺字段、null和尾随JSON;实例序号0也不能通过缺失 `sequence` 字段来冒充。任务命名空间、队列、处理器、策略、输入/结果和各阶段时间顺序全部参与核验。
|
||||
|
||||
任何预检、发布、启动、读取、步骤、尝试、来源或截止错误都会保留稳定错误分类并以非零状态退出。空分布的百分位是 JSON `null`,不能解释成零延迟。`completion` 是服务端 `created_at` 到 `completed_at` 的持久化耗时;它不是客户端轮询耗时。
|
||||
|
||||
## 原身份与失败核查
|
||||
|
||||
`instances` 保留每个实际发起的启动请求序号、幂等键、返回实例 ID、受理错误及持久核验标记;回执不明时 ID 可以为空,不代表未提交。定义创建键/名称为 `orbit-workflow-load-{run_id}`,发布键为 `run_id`,版本名为 `v1`。启动键和业务键都是 `orbit-workflow-{run_id}-{sequence六位十进制补零}`,输入为该 `run_id` 和数值 `sequence`。按原目标、原键及原请求核对,不能重跑整个命令来恢复旧请求。
|
||||
|
||||
`verified_success` 只计完成全部持久核验的实例。`duplicate_invocations` 按同一任务的额外调用计数;`unconfirmed_invocations` 是不能对应到已核验分支任务及尝试的调用数,部分实例尚未完成时可以非零。它们不能混算为重复执行,也不能据此宣称外部效果被撤回。本工具无外部副作用,超时只停止本地 Worker 并有界收尾,不自动取消、删除或重置服务器上的实例;保留原实例和任务以供查询。
|
||||
|
||||
## 验证边界
|
||||
|
||||
该工具适合在一次性 MySQL、测试凭据和明确的资源上限下做正确性、故障分母和阶段延迟验证。单机样本不能证明多节点吞吐、跨故障域高可用、备份恢复、RPO/RTO 或面向生产的容量;生产验收还需要目标拓扑、数据规模、连接池、备份介质、监控采集和发布兼容矩阵的独立证据。
|
||||
|
||||
Reference in New Issue
Block a user