2.7 KiB
Weave 流程负载测量工具
orbit-workflow-load 是 SDK 模块中的隔离测量命令,用于验证一条真实的 Weave 流程链路:创建定义、发布不可变 v1、启动多个实例、由独立 WSS Worker 执行两个有限并行分支,再核对持久化流程、步骤、任务、尝试、任务来源和最终输出。
它只使用 Orbit HTTP/WSS 和 MySQL 服务端已有能力,不连接消息队列、缓存或业务数据库;处理器只回显固定输入,不产生外部业务副作用。工具不会自动重试写请求,响应不明时必须保留原运行身份,通过报告中的分母定位未确认实例。
使用
先为隔离命名空间签发包含 workflow-access、workflow-run-access 与 worker-access 的凭据文件,再执行:
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 或面向生产的容量;生产验收还需要目标拓扑、数据规模、连接池、备份介质、监控采集和发布兼容矩阵的独立证据。