feat: add bounded workflow execution measurement
This commit is contained in:
35
docs/api/workflow-load.md
Normal file
35
docs/api/workflow-load.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# 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 或面向生产的容量;生产验收还需要目标拓扑、数据规模、连接池、备份介质、监控采集和发布兼容矩阵的独立证据。
|
||||
Reference in New Issue
Block a user