Files
orbit/docs/api/workflow-load.md

36 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Weave 流程负载测量工具
`orbit-workflow-load` 是 SDK 模块中的隔离测量命令,用于验证一条真实的 Weave 流程链路:创建定义、发布不可变 `v1`、启动多个实例、由独立 WSS Worker 执行两个有限并行分支,再核对持久化流程、步骤、任务、尝试、任务来源和最终输出。
它只使用 Orbit HTTP/WSS 和 MySQL 服务端已有能力,不连接消息队列、缓存或业务数据库;处理器只回显固定输入,不产生外部业务副作用。工具不会自动重试写请求,响应不明时必须保留原运行身份,通过报告中的分母定位未确认实例。
## 使用
先为隔离命名空间签发包含 `workflow-access`、`workflow-run-access` 与 `worker-access` 的凭据文件,再执行:
```sh
ORBIT_URL=https://orbit.example.test \
ORBIT_CREDENTIALS_FILE=/run/secrets/orbit-load.json \
go run ./cmd/orbit-workflow-load \
-requests 100 \
-concurrency 8 \
-workers 2 \
-capacity 4 \
-run-timeout 5m \
-poll-interval 250ms
```
参数上限是 `requests<=2000`、启动/核验并发 `<=128`、Worker 数 `<=32`、单 Worker 容量 `<=256` 且总容量 `<=1024`。`-timeout` 是单次 HTTP 交换截止,`-run-timeout` 是整次样本截止;两者都不是生产系统的 SLA。
工具先只读核对队列,不修改队列额度;定义名、实例幂等键、业务键和处理器名都带一次运行生成的随机前缀。每个实例固定使用输入 `{"run_id":"...","sequence":N}`,流程输出必须同时包含 `left` 和 `right` 两个相同对象。
## 报告解释
输出为一行 JSON,包含 `attempted`、`accepted`、`verified_success`、`unverified`、`handler_calls`、`worker_started`、`errors` 及 `admission`/`completion` 百分位。`complete=true` 的必要条件是:全部启动调用有唯一回执、全部实例为 `SUCCEEDED`、每个流程恰有两个成功 TASK 步骤、每个任务恰有一次成功尝试、来源固定到同一实例和版本、两倍分支处理器调用全部被确认且没有重复调用。
任何预检、发布、启动、读取、步骤、尝试、来源或截止错误都会保留稳定错误分类并以非零状态退出。空分布的百分位是 JSON `null`,不能解释成零延迟。`completion` 是服务端 `created_at` 到 `completed_at` 的持久化耗时;它不是客户端轮询耗时。
## 验证边界
该工具适合在一次性 MySQL、测试凭据和明确的资源上限下做正确性、故障分母和阶段延迟验证。单机样本不能证明多节点吞吐、跨故障域高可用、备份恢复、RPO/RTO 或面向生产的容量;生产验收还需要目标拓扑、数据规模、连接池、备份介质、监控采集和发布兼容矩阵的独立证据。