← 全部笔记
工程实践

统一处置平台:全异步事件驱动架构的设计与演进

从多业务统一接入,到 DAG 执行、状态流转与故障回溯,复盘内容治理处置平台的建设。

内容治理事件驱动平台工程

处置平台数据流

→ 请求 / 执行⇢ 重试 / 恢复事件

统一入口,异步推进

上游表达业务意图,平台组织执行;失败任务通过回溯重新进入执行链路。

为什么建设统一处置平台

内容治理的最后一步,是把决策变成实际动作:更新标签、发起审核、执行治理、通知相关方。早期,这些动作分散在各个业务服务里,由调用方自行串联下游接口。

随着接入方从生态内部扩展到商业化、电商、生服和搜索,问题逐渐变成了平台问题。同一种能力出现多套实现,执行顺序、失败重试和故障恢复各自处理,接入、对账与仲裁也缺少统一的边界。

处置平台的目标,是让业务通过统一的语义表达处置意图,由平台承接后续执行。它既收敛下游能力,也让执行记录、异常处理和多业务协作有共同的落点。

从受理请求到异步完成

平台采用异步事件驱动的执行架构。入口仍有请求与响应,但请求返回不需要等待所有下游动作完成。任务进入事件链路后,由执行器和恢复服务持续推进。

这里必须区分两件事:网关受理成功,表示平台接下了任务;任务完成,表示要求执行的动作已经收敛到完成状态。 对调用方简化接口,并不意味着平台可以忽略这两个时间点之间的责任。

整体可以分为三层:SDK 与 Cell 表达业务意图;网关组织任务并投递事件;执行器与回溯服务负责执行和恢复。对账与仲裁属于统一平台的治理能力,本篇不为其补画未经展开的内部实现。

用 Cell 表达业务,用 DAG 组织执行

Cell 是面向业务的最小执行单元。调用方表达的是“更新内容质量等级”或“发起审核”,而不是修改哪个底层字段、调用哪个执行器。

SDK 屏蔽 action、executor 等实现概念,并允许组合多个 Cell。一个业务动作在内部可以展开为多个执行步骤;这些步骤按依赖构建 DAG。两层抽象解决不同的问题:Cell 让接入方理解业务能力,DAG 让平台理解执行顺序。

网关产生的任务描述包含身份与编排信息、业务载荷、动作集合以及重试状态。执行器按照依赖推进节点,为各子任务维护状态机。

假设动作 B 依赖 A:A 失败时,B 记录为依赖异常;与 A 无依赖的其他节点可以完成。这样一次任务失败后,平台仍然知道哪些工作已经完成,哪些执行失败,哪些尚未具备执行条件。

状态随事件流转,恢复从断点继续

这套设计的一个特点,是把子任务状态保留在任务 Schema 中,让状态随着事件在队列之间流转。再次到达执行器时,根据已有状态决定哪些节点需要继续执行。

它不同于失败后从头重跑整个业务请求。恢复的单位是尚未完成、且依赖条件满足的子任务;已经记录成功的节点不应被无条件重复执行。

不过,跳过已记录成功的节点,不等于任意外部副作用都天然幂等。 下游已经执行、但结果尚未记录就发生中断时,仍然可能遇到结果不确定。理解这一机制时,需要把平台内的状态恢复与下游动作自身的幂等约束分开看,不能仅凭“有状态机”就推导出 exactly-once。

三类事件与两种恢复节奏

平台没有把所有失败交给同一种 MQ 自动重试,而是通过三类事件区分处理节奏。

事件 职责 后续处理
task.create 承载新任务与可以继续执行的任务 执行器消费;偶发失败时携带更新后的状态做有限次重试
task.fail 承载短期重试仍未成功的任务 交由 Ekko 判断恢复时机,延迟或重新投递
task.demote 承载被降级的任务 暂缓相关动作,待下游恢复后再推进

短期重试用于吸收抖动和偶发超时;回溯用于跨越更长时间的故障。两者分开之后,下游事故就不必变成持续的高频重试。

Ekko 是失败任务的回溯服务。它管理失败和降级任务,支持手动或自动重新投递。当下游恢复后,调整可重试状态,再把任务送回 task.create,由执行器沿正常路径继续执行。

这也说明,回溯不应是另一套业务实现。它负责让任务重新具备执行条件,实际执行仍复用原来的 DAG 和执行器。

全异步架构真正需要守住的边界

事件驱动把时间上的耦合拆开了,也把正确性责任分散到了多个环节。审视这种架构,需要明确以下边界:

  • 受理边界:返回成功时,任务是否已经进入可靠的处理链路;受理与投递之间的失败如何被发现。
  • 执行边界:子动作的成功状态对应什么事实;超时能否判断外部结果;重复执行如何处理。
  • 恢复边界:哪些失败值得立即重试,哪些应退避或降级;恢复回放如何避免再次冲击下游。
  • 完成边界:任务完成、结果通知送达和外部状态对账是不同事实,需要分别判断。

这些是架构的检查问题,不是仅凭队列名称就能推导出的实现保证。历史设计明确呈现了事件分流、状态传递与断点恢复;具体存储原子性和下游幂等契约,需要结合各动作实现分析。

从执行能力走向统一平台

平台建设带来的长期价值,是让新增业务主要关注自己的 Cell 语义和接入契约,而不用重复建设任务执行、异常回溯等公共机制。

统一接入也为对账与仲裁提供了共同的任务身份和业务语境。但这不意味着把所有差异都塞进执行器:执行器负责执行,业务规则决定应该执行什么,治理能力负责解释和处理跨系统结果。

回看这段建设,最重要的演进是从“各业务自行调用接口”,走向“业务表达意图、平台异步兑现”。DAG 表达依赖,状态机保留进度,事件驱动推进任务,回溯机制让长时间故障之后仍有继续执行的路径。

相关项目:抖音 · 生态处置平台 →

← 返回笔记