技术实践
天猫AI助手以分层调度和事件收敛管理状态写入
概述
原实现节点链硬编码在 process/v1/、状态靠手写 if-else 推进,service 模块有 21 处对 scheduleBO/processBO 的散点写入(每处自带 query→mutate→CAS→retry),新业务接入要么侵入老逻辑要么 fork,可观测性靠 grep 一份 assistShared.log、大促降级只能全开全关。 重构后形成 Schedule(dispatch/cancel/终态聚合)—DAG(初始化、后继推进、失败级联、取消广播)—Process(ReAct 循环、Node 调度、Syncer 钩子)—Node(原子动作返回 NodeResult(CONTINUE/SUSPEND))分层,各层独立状态机。借鉴 Redux 思路在 Java+DB 语境下用 Reducer + 25 个 Event 收敛写入,业务侧只表达“我希望发生 X”,前置条件校验、字段变更与并发重试全部由 Reducer 内部统一处理,单 process 终态写库次数从 4 次降到 2 次(N 个子任务并发场景下为 N 倍放大收益)。 可观测性拆为 monitor/bizStat/error 三个独立 logger 配 8 个 SwitchCenter 开关,字段白名单 + eventType 字典约束使 SLS 可直接 group by。业务承载力从单一讲价流程扩展到 5+ ScheduleBizType / 5+ ProcessTemplate 共存,新增业务接入压平到小于 1 天。