136 lines
9.9 KiB
Markdown
136 lines
9.9 KiB
Markdown
# Orbit 功能说明:Pulse 与公共能力
|
||
|
||
> 版本 0.2 · 2026-09-17。Pulse 与 Weave 首版功能范围已确认;标注“建议”的细节待评审。Weave 具体范围另见流程设计。基础、任务执行、调度、资源控制和可靠订阅已实现;批量受理、独立任务核查/人工重试及查询筛选等继续开发,实现状态见持续开发计划。
|
||
|
||
## 1. 目标与责任边界
|
||
|
||
Orbit 统一提供任务调度与流程编排。Pulse 接收一个明确的工作单元,按照时间、容量、权限和重试策略交给业务 Worker 执行,管理可查询、可恢复的执行过程。Weave 将多个工作单元按流程规则连接起来,具体方案见 [流程设计](06-workflow-spec.md)。
|
||
|
||
| 参与方 | 职责 |
|
||
| --- | --- |
|
||
| Pulse | 任务受理、调度、派发、执行权、重试控制、运行记录、结果交付 |
|
||
| 业务系统 / Worker | 业务校验、业务授权、外部调用、业务幂等、业务结果与证据 |
|
||
| Weave(内部模块) | 研发定义发布、多步骤依赖、分支、汇合、持久化等待、有界重复查询、暂停/继续、人工恢复与流程版本 |
|
||
| MySQL 运维 | 数据持久化与复制配置、备份、故障切换、恢复演练 |
|
||
|
||
任务可以是一次文件转换、一次数据准备或一次外部作业结果查询。Pulse 管理任务执行过程,具体业务结果和完成条件由处理器契约定义。
|
||
|
||
任务类型、参数和标识采用通用模型,不要求平台理解接入方的专用业务概念。
|
||
|
||
## 2. 基本概念
|
||
|
||
| 概念 | 含义 |
|
||
| --- | --- |
|
||
| 应用 / 环境 / 命名空间 | 接入身份与资源边界;建议一个应用环境对应一个命名空间 |
|
||
| 队列 | 任务路由、资源配置与 Worker 消费范围 |
|
||
| 任务类型与版本 | 处理器身份及其兼容版本 |
|
||
| 任务 | 一项已受理工作,具有稳定的任务 ID |
|
||
| 执行尝试 | 一次派发与执行过程,具有独立尝试 ID 和执行凭据 |
|
||
| 调度计划 | 产生任务的时间规则,每次实际触发产生独立任务 |
|
||
| 业务关联键 | 由业务方提供的查找、追踪标识 |
|
||
| 并发控制键 | 在规定作用域内限制同时有效执行许可的通用标识 |
|
||
|
||
自动重试沿用任务 ID,产生新的执行尝试。HTTP 请求重试、任务重试和定时计划的下一次触发是三件不同的事情。
|
||
|
||
Weave 有界查询的一轮对应一个 Pulse 任务;查询得到“处理中”后,Weave 等待并创建下一轮任务。当前轮请求失败由 Pulse 在原任务下重试,不能通过开启新轮次绕过重试上限。
|
||
|
||
## 3. 任务提交与管理
|
||
|
||
### 3.1 提交方式
|
||
|
||
- **立即执行**:受理后尽快进入可派发范围,实际开始时间受资源和排队影响。
|
||
- **延迟执行**:在指定等待时长之后才允许开始。
|
||
- **指定时间执行**:在指定时间之后才允许开始,不承诺硬实时触发。
|
||
- **批量提交**:多项普通任务的提交方式;建议逐项返回结果,每项独立幂等,失败项独立补交。
|
||
|
||
任务至少说明:归属、队列、处理器与版本、参数版本、执行时间、时限、重试规则和提交幂等标识。已受理参数与生效策略保存快照;修改配置不静默改写历史任务。
|
||
|
||
最晚允许开始时间、单次执行超时、任务总时限分别定义。到期后停止授权新的执行;已经发出的业务请求是否产生效果,需要按处理器的结果确认规则判断。
|
||
|
||
### 3.2 操作行为
|
||
|
||
| 操作 | 目标行为 |
|
||
| --- | --- |
|
||
| 幂等提交 | 同作用域、同标识、同语义请求返回原任务;同标识不同请求明确冲突 |
|
||
| 查询 | 返回当前任务状态、关联计划、执行尝试、错误与结果引用 |
|
||
| 取消待执行任务 | 在与开始执行的竞争中原子决定取消是否生效 |
|
||
| 取消执行中任务 | 持久化取消意图并通知 Worker,等待停止或最终结果,已有业务效果不自动撤销 |
|
||
| 人工重试 | 校验权限、错误类别及业务确认条件,保留原历史,记录操作人和原因 |
|
||
| 修改业务参数 | 新建关联任务,原任务参数不变 |
|
||
|
||
**设计建议:人工重试创建带 `retry_of` 的新任务。** 原任务保留终态及结果,避免外部订阅方已经消费终态后任务又悄悄恢复。业务幂等键应按原操作语义保留;平台新任务 ID 不代表允许重复产生业务副作用。此项在协议冻结前确认。
|
||
|
||
流程关联任务的人工恢复统一经过 Weave,校验流程版本、步骤归属和当前恢复条件;不能直接从普通任务重试入口生成无人接续的流程任务。
|
||
|
||
流程暂停的门控建议由 Pulse 通用执行控制承载,阻止关联任务的新领取、开始和执行重试,同时继续收集已授权执行的结果。它与定时计划暂停、队列暂停分别建模;具体规则见 [Weave 暂停与继续](06-workflow-spec.md#71-暂停与继续)。
|
||
|
||
任务成功表示处理器完成约定的这一步。例如“渠道提交已受理”可以是一个处理器的成功结果,最终业务成功应由查询或回执处理任务另行确认。
|
||
|
||
## 4. 定时计划
|
||
|
||
- 支持 Cron、固定间隔、时区、生效与结束边界、启用、暂停、恢复和修改计划。
|
||
- **设计建议**:首版采用五段 Cron;固定间隔首先定义为按基准时间推进的 fixed-rate。是否增加“完成后再等待”的 fixed-delay 待确认。
|
||
- 每个实际触发点具有唯一身份,记录采用的计划版本与原计划时间。
|
||
- 计划变更明确生效边界;已生成任务保留原参数与策略快照。
|
||
- 暂停计划阻止新的触发,不隐式取消已经生成或正在执行的任务。
|
||
|
||
创建计划时必须明确以下策略,不能在故障后临时猜测:
|
||
|
||
| 情况 | 可选策略及限制 |
|
||
| --- | --- |
|
||
| 漏跑 | 跳过、合并为一次、按次补跑;补跑必须有数量/时间窗口与速率上限 |
|
||
| 上一轮未完成 | 允许并行、串行等待、跳过本次;串行等待也必须有积压上限 |
|
||
| 时区夏令时变化 | 明确不存在时刻、重复时刻的处理,首版选定并测试后发布 |
|
||
| 停机期间修改计划 | 保存版本与生效边界,按明确的历史版本计算漏跑 |
|
||
|
||
跳过和合并需留下原因、原计划时间或覆盖范围。业务日历由业务系统决定,Pulse 执行其提交的时间计划。
|
||
|
||
## 5. Worker 与执行恢复
|
||
|
||
- Worker 通过 WSS 主动连接,经过鉴权后声明处理器版本、消费队列及执行容量。
|
||
- SDK 封装消息收发、任务去重、租约续期、结果重报、带抖动的重连和优雅退出。
|
||
- 同一 Worker 可执行多个任务,网络读写不能被业务处理器阻塞。
|
||
- 任务只分配给版本兼容且有容量的 Worker;无兼容 Worker 时可观测地等待,并受时限约束。
|
||
- 连接心跳检测通信;任务续租确认具体执行权,两者独立。
|
||
- 断线后先核对任务,不直接认定业务失败;无有效租约时 Worker 应停止推进并尝试取消可取消的操作。
|
||
- 优雅退出时停止接新任务,给已有任务留出受控完成时间,退出超时按恢复规则处理。
|
||
|
||
错误至少区分:可安全重试、明确不可重试、需要外部核查、需要人工处理。策略包含退避、抖动、尝试上限或总时限,禁止无限快速重试。
|
||
|
||
副作用是否发生不明确时,不允许因为“网络错误”自动重复提交业务操作。任务类型必须声明恢复安全等级;声明缺失时采用保守处理。
|
||
|
||
## 6. 队列与资源控制
|
||
|
||
- 支持队列并发、应用配额、速率限制、优先级和项目间公平性。
|
||
- 支持按业务提供的并发控制键限制有效执行许可。例如可用资源标识限制同一资源的一类操作。
|
||
- 跨节点限制必须由共享状态协调,单节点内存计数只能约束该节点。
|
||
- 并发控制不自动提供跨任务严格顺序;需要顺序的业务必须明确顺序协议或交由流程编排。
|
||
- 任务数量、参数大小、发送缓冲、事件积压和重试均有有限上限,并提供拒绝/背压行为。
|
||
|
||
过期 Worker 仍可能在物理上运行。业务资源端还需幂等或执行代次校验,避免旧执行产生额外效果。
|
||
|
||
## 7. 多项目、安全与管理
|
||
|
||
支持应用与环境隔离、可轮换凭据、队列级提交和消费授权、查询权限与管理权限。命名空间和 Worker 标识不能替代身份认证。
|
||
|
||
管理操作包括暂停队列派发、调整配额、取消、人工重试和计划变更。都应记录操作人、时间、原因和前后状态。暂停派发不等于强制停止运行中的处理器。
|
||
|
||
参数、结果与日志设置访问控制和脱敏规则。大文件使用业务侧引用;凭据不作为普通任务参数或日志传递。
|
||
|
||
## 8. 查询、审计、告警与结果交付
|
||
|
||
- 通过任务 ID、业务关联键、状态、队列、时间范围查找任务。
|
||
- 保存执行尝试和关键状态转换,关联 Worker、版本、错误分类与结果引用。
|
||
- 监控任务积压、到期派发延迟、重试、失联、数据库异常、结果通知积压和资源用量。
|
||
- 提供可靠结果订阅:事件持久化,接收方处理后确认,未确认可再次交付。
|
||
- 运行统计可最终一致;影响派发与终态判断的状态必须按权威状态读取。
|
||
- Orbit 运行审计与业务审计通过关联标识衔接,保存策略分别制定。
|
||
|
||
## 9. 首版范围与后续扩展
|
||
|
||
上述生产相关行为属于首版设计范围。首版首先交付 Go SDK、管理 API 与必要运行指标。完整图形化控制台、其他语言 SDK、高级全文检索及跨地域主动写入作为后续扩展评估。
|
||
|
||
流程依赖、等待及有界查询由平台内的 Weave 承担,已确认范围见 [流程功能与设计](06-workflow-spec.md)。审批人员与业务权限规则、专用规则计算由业务系统承担。通用 SQL 查询平台、文件处理平台不纳入 Orbit。
|
||
|
||
功能是否达标以 [生产验收](05-production-acceptance.md) 的结果为依据,不以接口存在或演示运行成功代替。
|