Files
orbit/docs/reports/phase-4-5.md

12 KiB
Raw Permalink Blame History

P4/P5 平台功能阶段验收与生产边界

日期:2026-09-18。本报告按原流程功能、开发计划及生产故障矩阵W01–W17核对,保留未完成项。原功能均有服务端、公共HTTP/独立SDK、场景及异常回归证据;版本/暂停/全停与提交边界的补强完成后,P4/P5平台功能阶段验收通过。P6/P7及持续目标保持进行中,生产负载、部署拓扑和发布兼容不包含在这一结论中。

新增补强:版本、暂停竞争与全停恢复回归提供W06/W09/W14/W15的实际事务及公共SDK进程证据。另有A04/W01/W13/W16故障边界的真实派发未送达、COMMIT前后断线和最终信号竞争证据。下表随两批更新,原轮询/恢复示例的验证记录保留。

首批独立场景交付

新增两个独立可运行SDK示例,均只导入公开SDK及示例内部辅助包,不访问Orbit数据库或服务端模型:

  • 有界轮询:先提交一次,实际HTTP查询503→PENDING→DONE,2轮3次尝试;另一流程两轮PENDING后转核查,2轮2次尝试。历史分页、任务来源、实际HTTP次数、原截止和Worker排空逐项断言。
  • 带证据恢复:本地渠道保存提交结果后直接关闭HTTP连接,Worker报UNKNOWN;暂停、查询原操作证据、执行核查、步骤结论、解除核查、显式恢复暂停,再完成后继任务。断线实际发生,外部提交只发生1次,精确序号9007199254740993、旧UNKNOWN尝试、同键审计及暂停标记均保留。

外部系统为进程内受控HTTP夹具,不是持久业务渠道。恢复示例能证明唯一提交已经结束,并据此模拟管理员的明确决定;不能据此把真实业务核查自动化。平台事务与外部业务副作用的责任边界没有改变。

没有新增模型字段、数据库迁移、外键或级联。平台仍为36个模型、312个直接持久化字段;中文注释保持。标准回归加入这两个命令,目前共23个可运行SDK示例和2个独立业务模块;examples/internal/flowdemo是共享辅助包,不计为可运行示例。

原功能逐项对应

已确认能力 实现与可运行入口 已有直接验证证据
研发定义发布、类型和资源约束 定义API、结构格式、workflow-definition例子 定义存储回归:并发同键/同版本、精确数字、非法/损坏定义、权限撤销、事务失败;SDK提交后丢回执原键恢复
顺序、条件分支、有限并行汇合 weave/engine与持久运行器;workflow例子实际并行后汇合 决策器测试精确条件、分支选择冻结与预算;实例覆盖六种初始节点;推进重复消费、并行结果只建一个后继、满额回滚和根待续
固定版本及输入 StartWorkflow显式version;GetWorkflowVersion及实例来源 实例并发受理固定版本、发布v2后原键回执保留;实例查询继续按v1全部队列授权。新增版本回归实际完成v1后继和v2新实例,验证不同处理器/输入、原版本与原截止
SIGNAL等待、早到和旧代次隔离 信号约定、SendWorkflowSignal及workflow例子 受理身份/契约/范围/事务;消费并发赢家、真实到期、及时受理晚消费、篡改及最终查询结清
TIMER持久等待、原截止 时钟约定、workflow例子 时钟存储自然到期、重复消费、实例截止截断;真实进程全停、两新节点接续
有界查询与独立尝试预算 workflow-poll例子、POLL定义与历史轮次API 时钟存储验证同轮重试、下一轮、满额/暂停不耗轮次、截止与在途结果;新例子分别验证成功和耗尽后的实际请求次数
暂停/继续、取消、分支失败结清 公共控制、停止规则 控制回归原control_revision、原键/并发/撤权、开始与取消竞争、并行FAIL_AFTER_SETTLED、UNKNOWN不终结、超过32步待续;新增真实锁等待重叠的PAUSE/开始/领取/后继/重试竞争
人工核查、TASK/POLL重试及等待恢复 六类恢复API、workflow-recovery例子 TASK恢复、POLL恢复、等待恢复:旧激活、尝试/轮次/原截止、证据、失败回滚、当前版本和停止意图
完整查询与审计入口 当前详情、历史、实例筛选、状态事件、任务来源 对应存储回归验证当前与历史激活区分、分页、归属损坏、全部固定队列权限;独立SDK覆盖六类恢复和读取,时间线另有SDK与批量事件回滚验证
不依赖内存的接续 MySQL检查点、内部Inbox、额度、门控与同事务事件 真实流程进程测试先确认原进程SIGKILL退出,再启动两个新节点;结果、TIMER/POLL、早到/最终信号、停止意图、TASK/POLL人工恢复及等待换代均保留

上述“已有证据”是相应断言的范围,不等于任意并发交错、数据库故障拓扑或业务渠道已验收。API字段与限制以当前接口手册为准;旧阶段报告保留当时状态,不回写成后来全部完成。

W01–W17 故障矩阵核对

编号 当前证据 仍需补强的具体边界
W01 SQL失败/SAVEPOINT回滚及实例启动、后继创建的真实COMMIT前后断线;原身份恢复且状态/任务/消费确认原子一致,见故障边界 MySQL进程/复制故障、存储持久化组合继续P6
W02 结果持久化后全控制节点退出,两新节点消费,后继不重复 生产数据库切换另按P6,不与应用进程强杀等同
W03 早到、重复、迟到、错误关联及代次的实际存储与SDK回归 仍须纳入容量模型中的大量信号积压
W04 TIMER、早到SIGNAL、独立等待恢复均有全停后接续 生产长时间等待、保留与清理策略按P6验收
W05 并行已知失败结清、未知效果保留核查,成功步骤保持 业务补偿不属于已确认首版,不冒充平台回滚外部效果
W06 v1等待时发布不同处理器/输入/时限的v2,实际完成旧实例后继及v2新实例,精确输出、固定版本和原截止保持 服务端/SDK滚动兼容仍按P7,不能用定义版本隔离替代
W07 已授权任务取消后收集SUCCEEDED/FAILED/CANCELLED/UNKNOWN,含进程全停 大量在途取消、外部系统执行失联仍需生产负载和接入方证明
W08 同一实例并行结果竞争,后继与汇合仅一次 高负载热点实例锁等待在P6测量
W09 信号受理/原截止消费者/CANCEL三个事务均进入MySQL锁等待后放行,六种顺序分别覆盖有/无及时信号;迟到信号不胜出,及时信号保留 热点负载、长时间消费积压及数据库切换仍按P6
W10 同恢复键竞争、旧激活结果、旧信号代次及恢复后全停 滚动版本兼容、长期历史保留另按P6/P7
W11 同轮重试与PENDING新轮次的存储、SDK及实际HTTP例子 渠道峰值与大批量同刻唤醒按P6
W12 最大轮次、截止、原轮尝试耗尽拒绝绕过;新例子保留NEEDS_REVIEW 不把本地时间预算测试换算成生产延迟指标
W13 PENDING结果/等待和下一轮任务/预算分别覆盖COMMIT前回滚、提交后丢确认;新运行器按原候选恢复,原结果计时及查询预算保持 生产数据库失联、切换与容量继续P6
W14 PAUSE与开始/后继/领取/安全重试的真实事务竞争,双向入队、数据库授权时间、暂停收集结果、恢复任务/尝试数及原截止断言 不声称穷尽全部线程交错;高负载锁等待及故障切点继续P6
W15 公共SDK暂停后提交任务结果/信号,两原节点全部SIGKILL并Wait退出;TIMER/下一查询轮就绪时间过去后两新节点接管,显式RESUME完成四任务/两轮查询 单机数据库下的应用进程故障证据;生产数据库高可用和长停机恢复另按P6
W16 原受理时间裁决、在途PENDING结清/冲突核查/全停保留;另有最终信号、旧PENDING重放、下一轮时钟六种真实事务竞争,后继仅一个 新结果冲突与旧结果重放分别核验;不声称穷尽调度交错,热点负载继续P6
W17 同版本同内容/不同内容、非法定义、SDK丢发布回执恢复 旧SDK/服务版本滚动兼容矩阵按P7发布候选核对

首批独立场景验证记录(历史)

环境:macOS arm64、Go 1.27.1、Docker MySQL 8.4.10,一次性隔离数据库和真实Orbit进程。新例子先用go run -race运行,两个命令均退出0;恢复例子的网络断线由本机HTTP服务器真实注入。

标准命令为make fmt test vet build及make integration。完整标准脚本退出0,23个SDK示例、2个独立业务模块和原进程故障链路均通过。存储组239.651秒、流程进程组48.687秒、Inbox35.613秒、Outbox34.499秒,最后Worker/订阅进程组95.453秒;这些是测试耗时,不是性能指标。

收尾按原计划给轮询例子补入首次提交TASK,该修改晚于上述全量脚本的示例执行。最终两个例子另在新隔离数据库、真实Orbit及go run -race下完整重跑,退出0,两个轮询场景均验证submissions=1;随后取得基础fmt/race单元/vet/build退出0。平台服务端和迁移未改动;不将较早的全量日志冒充包含最后这项示例修改。

最终文档检查1162个本地链接、68个JSON块,错误0。数据库升级回归继续确认70个历史外键移除、323个原索引组成部分和任务保留,最终结构外键0。

首次定向脚本省去存储测试后忘记单独执行迁移,bootstrap在发放凭据前拒绝,已修正为先运行orbit-migrate。编译时也纠正了示例误用的来源字段名,正式SDK字段为PollRound。这些修正没有改变平台执行或恢复规则。

阶段结论与下一步

  1. W06/W09/W14/W15已补真实数据库与公共SDK进程断言,并完成标准全量回归,见专项回归。原四项缺口已关闭,后续按剩余生产故障推进。
  2. W01/W13已补真实COMMIT前后断线,W16已补最终信号/旧PENDING重放/下一轮竞争;本报告原功能表、故障表及两批完整回归共同支持P4/P5平台功能阶段验收。此次完整标准回归结果见故障边界报告,历史记录不覆盖为新数字。
  3. P6已完成上述首批故障工具(包括A04未送达),下一步为统一观测、凭据轮换、历史保留/归档、容量负载、备份恢复与滚动升级;MySQL切换、跨故障域等原门槛继续保留。
  4. P7补实际文件转换等仍缺的原场景、SDK版本发布与新接入者全量核对。百万企业支持能力只能根据实际工作负载和目标拓扑验证,当前不作容量承诺。