feat: establish Orbit models, migrations and development baseline
This commit is contained in:
110
docs/05-production-acceptance.md
Normal file
110
docs/05-production-acceptance.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# Orbit 生产验收与发布门槛
|
||||
|
||||
> 版本 0.2 · 2026-09-17。本文是验收计划,所有项目当前均为待实现、待验证。没有已通过的测试或容量结论。
|
||||
|
||||
## 1. 验收对象与证据
|
||||
|
||||
统一验证平台中的 Pulse 任务模块、Weave 流程模块、MySQL、HTTP / WS 协议和业务 SDK。包含模拟业务处理器及模拟外部渠道,以验证副作用与结果确认边界。
|
||||
|
||||
每份验收报告记录:版本、数据库配置、拓扑、硬件、网络条件、参数、数据量、复现步骤、预期与实际结果、关键指标、异常记录和遗留问题。
|
||||
|
||||
稳定性目标必须表述为在指定故障模型与负载下满足约定,不使用脱离环境的“绝不丢失”或“支持无限租户”作为测试结论。
|
||||
|
||||
## 2. 必须覆盖的正确性与故障场景
|
||||
|
||||
| 编号 | 场景 | 期望结果 |
|
||||
| --- | --- | --- |
|
||||
| A01 | 相同幂等键重复提交、并发提交 | 返回同一任务,不创建第二份工作;参数冲突明确拒绝 |
|
||||
| A02 | 受理已提交,HTTP 响应丢失 | 使用原键可查到任务,重试不重复创建 |
|
||||
| A03 | 多节点同时领取同一任务 | 仅一个有效授权,配额与尝试记录一致 |
|
||||
| A04 | 派发落库后节点宕机,消息未送达 | 未开始尝试可回收,任务仍可追踪并恢复 |
|
||||
| A05 | 开始确认或完成确认丢失 | SDK 按操作身份核对/重报,不能错误地再执行一次已确认操作 |
|
||||
| A06 | 业务写入成功,Worker 在上报前崩溃 | 平台允许恢复;业务幂等返回原结果,副作用未知时转核查 |
|
||||
| A07 | 旧 Worker 暂停后恢复,租约已被替代 | 旧结果不覆盖新状态,资源端防护按接入契约生效 |
|
||||
| A08 | 续租与过期回收、完成操作竞争 | 事务条件决定唯一合法转换,额度不重复释放 |
|
||||
| A09 | WS 断线后重连不同节点 | 重新鉴权与恢复核对,旧会话不能继续控制新会话归属 |
|
||||
| A10 | Worker 容量消息重复、发送缓冲满 | 不重复发放额度,不无限积压内存,不丢弃关键结果恢复信息 |
|
||||
| A11 | 取消与开始/完成竞争 | 终态与已知结果一致,取消意图不伪装成业务回滚 |
|
||||
| A12 | 外部平台已受理但响应超时 | 按处理器安全策略核查,不能盲目重复提交 |
|
||||
| A13 | 多调度节点处理同一触发点 | 仅一个有效触发实例,任务与计划进度原子更新 |
|
||||
| A14 | 停机、时区变化、计划修改与恢复 | 补跑/跳过/合并遵守已定义版本边界,全部可追溯 |
|
||||
| A15 | 结果接收方停机或确认丢失 | 事件保留并可重投,接收方去重,积压可观测 |
|
||||
| A16 | 同业务键并发与跨节点配额竞争 | 有效许可满足约束,过期执行副作用按业务防护处理 |
|
||||
| A17 | 使用另一应用/队列身份读写或恢复任务 | 被拒绝,敏感参数与凭据不泄露 |
|
||||
| A18 | MySQL 短暂不可用或主节点切换 | 不发出无依据的成功确认;恢复后任务可核对 |
|
||||
| A19 | 平台与 Worker 滚动升级 | 兼容版本继续服务,旧任务找到兼容处理器或明确等待 |
|
||||
| A20 | 清理与归档同时发生重复补交/事件补投 | 幂等与未确认事件不被无声破坏 |
|
||||
| W01 | 创建流程下一步任务时中断事务 | 流程状态与任务创建同时提交或回滚 |
|
||||
| W02 | 任务完成后流程处理节点宕机 | 内部结果事件可恢复消费,步骤不重复推进 |
|
||||
| W03 | 信号提前、重复或迟到 | 已存在实例可保存早到信号,消费去重且匹配正确步骤 |
|
||||
| W04 | 人工等待或定时等待期间重启 | 等待状态恢复,不长期占用业务 Worker |
|
||||
| W05 | 并行步骤部分成功、部分失败 | 汇合规则明确,成功副作用保留,重试不越过业务安全规则 |
|
||||
| W06 | 新流程版本发布 | 已运行实例继续使用冻结版本,不悄悄改变历史步骤 |
|
||||
| W07 | 取消流程时仍有任务执行 | 流程如实反映取消推进与待核查状态,不宣称已撤销副作用 |
|
||||
| W08 | 同一汇合点的多个结果并发到达 | 按汇合规则只推进一次、只创建一份后继任务 |
|
||||
| W09 | 信号受理、定时唤醒与取消竞争 | 原子决定唯一有效推进;已按时受理信号不因消费积压被误判超时 |
|
||||
| W10 | 人工恢复后收到旧激活结果或重复恢复请求 | 旧结果不推进新激活,恢复去重,保留审计与业务幂等 |
|
||||
| W11 | 查询正常返回处理中,期间部分请求失败 | 查询轮次与 Pulse 尝试独立计数;处理中按间隔进入下一轮,请求重试不新增轮次 |
|
||||
| W12 | 轮次用完、总时限到达或单轮重试耗尽 | 按规则转核查;不换任务或轮次绕过上限,不再次调用业务提交接口 |
|
||||
| W13 | 保存查询结果、建立等待或创建下一轮时宕机 | 从持久化轮次与检查点恢复,同一轮只创建一项任务,预算不丢失或重复扣减 |
|
||||
| W14 | 暂停与创建步骤、任务领取、开始及重试竞争 | 按控制版本及门控决定唯一有效顺序,暂停后不新增授权;已授权工作继续收集结果 |
|
||||
| W15 | 暂停期间收到结果/信号、到期或重启,然后继续 | 结果和待续推进记录可恢复,原版本与预算保留;按冻结计时规则处理到期,不集中补查 |
|
||||
| W16 | 最终回执、查询结果与下一轮唤醒并发或迟到 | 只完成一次等待并创建一份后继工作,停止后续轮次,冲突或旧结果不能覆盖结论 |
|
||||
| W17 | SDK 重复发布、同版本内容冲突或发布非法定义 | 同内容幂等,不同内容拒绝;非法表达式、引用及无界预算被拒绝,运行实例版本不变 |
|
||||
|
||||
W11–W17 中的字段与暂停/计时算法按技术评审后的规范执行;这些验收项不表示当前建议已经实现或测试通过。
|
||||
|
||||
验收还需覆盖日志脱敏、权限撤销、消息超限、死锁、连接重连风暴、磁盘容量告警及进程强制终止。
|
||||
|
||||
## 3. 性能负载模型
|
||||
|
||||
租户数量用于推导业务量,不能直接等同于连接数、队列数或每秒任务数。至少建立以下维度:
|
||||
|
||||
- 平均与峰值提交任务数、批量大小、瞬时集中触发规模。
|
||||
- 同时运行任务数、任务耗时分布、续租频率与重试比例。
|
||||
- Worker 连接数、每连接并发、空闲连接比例、重连频率。
|
||||
- 参数/结果大小、事件数量、保存周期、历史查询并发。
|
||||
- 定时计划数、到期分布、漏跑补偿规模与允许的恢复窗口。
|
||||
- 流程实例数、每实例步骤数、并行度、等待实例数与信号速率。
|
||||
- 查询轮次与单轮尝试分布、渠道请求峰值,以及大量暂停实例继续时的待续推进规模。
|
||||
|
||||
采用短任务、中长任务、混合负载、集中触发、长期积压和故障恢复六类场景。既测空处理器的框架开销,也测可控延迟的模拟外部调用。
|
||||
|
||||
## 4. 必须度量的指标
|
||||
|
||||
| 指标 | 定义 |
|
||||
| --- | --- |
|
||||
| 受理延迟 | 发起请求至可靠受理响应,统计 p50 / p95 / p99 |
|
||||
| 调度延迟 | 原计划到期时间至变为可派发状态,单独统计漏跑补偿 |
|
||||
| 排队与派发延迟 | 可执行时间至授予执行权,以及授予至 Worker 收到/开始 |
|
||||
| 吞吐 | 可靠受理、开始、完成、事件交付分别统计 |
|
||||
| 数据库负载 | 查询/写入、锁等待、死锁、连接池、日志与磁盘 I/O、复制滞后 |
|
||||
| 连接与内存 | 连接数、重连、发送队列、内存、GC、CPU 与网络 |
|
||||
| 恢复效果 | 故障发现、重新授权、流程恢复、积压清空的时间与错误数量 |
|
||||
| 公平性 | 单个应用突发时其他应用的延迟与额度兑现情况 |
|
||||
| 流程推进 | 内部事件至步骤完成/后续任务创建的延迟与积压 |
|
||||
| 有界查询与暂停 | 活跃查询节点、轮次/尝试消耗、到期转核查量、暂停实例数、继续后的推进延迟及渠道请求速率 |
|
||||
|
||||
开启生产所需持久化、复制、鉴权和审计后再测,报告任何性能优化对可靠性或恢复窗口的影响。
|
||||
|
||||
## 5. 发布前必须确定的参数
|
||||
|
||||
以下数值当前均为待定:容量目标、延迟目标、可用性目标、RPO / RTO、消息和批量上限、租约/续租/心跳/重连参数、扫描与补跑预算、查询轮次/间隔/总时限与单轮重试预算、暂停继续的推进预算、保留周期、兼容版本范围。
|
||||
|
||||
配置之间需要校验,例如续租间隔与安全余量必须允许在租约到期前发现失败;代理空闲超时需与 WS 活性策略协调;最长恢复补发窗口应与幂等和事件保留周期匹配。
|
||||
|
||||
## 6. 备份恢复与上线门槛
|
||||
|
||||
恢复演练必须实际恢复到隔离环境,核对任务、尝试、计划、幂等、结果事件、流程、暂停控制与执行门控、查询轮次及预算、信号和权限配置。恢复旧数据后需要隔离旧连接与执行凭据,并核查可能已发生的外部效果。
|
||||
|
||||
上线前至少具备:
|
||||
|
||||
- 已评审的功能、状态机、协议与兼容矩阵。
|
||||
- 实际 MySQL 的持久化、复制确认、故障切换及恢复说明。
|
||||
- 上述关键故障场景的复现证据与结果核对。
|
||||
- 满足约定峰值且保留容量余量的压力测试记录。
|
||||
- 监控告警、值守与恢复操作说明,必要的管理权限和审计。
|
||||
- 业务接入方的幂等及结果核查验收;真实业务副作用前先完成隔离环境演练。
|
||||
- 发布、迁移、回滚/前向修复策略,以及明确的停止扩量条件。
|
||||
|
||||
仅有单机演示、正常路径测试或一次吞吐测试,不构成本项目的生产验收通过。
|
||||
Reference in New Issue
Block a user