55745 个工作流、31 万个任务把 JVM 堆吃到 5GB。工作流引擎 4.0 重构把单流程任务上限从约 2500 提到 30000、p99 评估延迟降约 40%。
55745 个工作流、31 万个任务,JVM 堆内存吃到 5GB——这是 2022 年社区里一位用户报出的真实负载画像。四年后交出的 4.0 重构,改动几乎都指向同一件事:别再把整份运行状态塞进内存。
目前这套引擎支撑着 150 个应用里定义的约 20 万个流程,每月执行约 4.2 亿次,负责协调内容与工作室工程、广告、游戏等部门的分布式任务。问题出在评估环节:早期版本在评估时会先把完整的运行状态加载进内存,规模一涨,压力直接落到堆上。
社区早有先兆。2022 年有用户报告 55745 个工作流、31 万个任务导致 JVM 堆用到 5GB;另一则讨论提到一个 1.7MB 的流程定义里塞了近 5000 个任务条目,光存储定义就耗时近两分钟,反复从数据库重载定义还会拖慢执行。当时维护者承认,引擎会把整个运行中的流程加载进内存来评估,「只加载必要部分」还停在路线图上。
这是判断编排系统天花板的第一条经验:它的扩展上限由「每次决策要装多少状态进内存」决定,而不是由集群有多少核决定。
新设计把流程元数据与任务、用户数据拆开,任务单独存储。评估器不再拿整份状态,而是加载一份轻量蓝图,只取「下一次决策所需」的那部分任务数据。这不是缓存优化,是数据模型的重画。
索引交给 Elasticsearch,Kafka 把索引操作从执行路径上摘下来,执行队列用 Timestone,长期存储落在 Iceberg 与 S3。三层的扩容节奏从此互不绑架。
待处理状态与终态状态分开存储,由应用层协调并以终态为优先,任务状态协调里原有的锁定机制因此消失。评估动作被移出同步请求路径,更新进入专用队列按序异步处理。效果很直观:资源竞争高峰时,锁获取失败的重试曾达到每周期约 2700 次,重构后几乎归零。
4.0 增加了原生并发控制、动态工作线程分配,以及类型安全的 Java Workflow SDK。广告业务线已经把它用在创意素材导入和数据清洁室流程上,并且预计未来的编排需求还会增长五倍。
| 维度 | 4.0 之前的做法 | 4.0 之后的做法 | 可观测结果 |
|---|---|---|---|
| 加载粒度 | 整份运行中状态进内存 | 轻量蓝图,按需加载下一次决策所需任务 | 单流程任务上限从约 2500 提升到 30000 |
| 状态协调 | 任务状态协调带锁 | 待处理与终态分离,应用层终态优先 | 锁获取失败重试从峰值约 2700 次/周期降至接近零 |
| 评估路径 | 评估挂在同步请求路径上 | 评估移出同步链路,经专用队列串行异步处理 | p99 评估延迟下降约 40% |
| 存储与索引 | 状态与任务同层承载 | 搜索索引、执行队列、长期存储三套独立演进 | 各层可独立扩容,互不牵连 |
如果你正在自建或改造一套面向智能体的编排平台——像从单点到多智能体的演进路线里那样——这轮改造里能直接借用的有五条:
IDC 与浪潮信息在 9 月 21 日联合发布的《2026 年中国人工智能计算力发展评估报告》给出了一组对照:2026 年中国智能算力规模预计达到 2576.5 EFLOPS,同比增长 87.9%;2026 到 2030 年,中国活跃智能体数量年复合增速 151.2%,同期词元消耗量的年复合增速高达 3499.3%。另一边,全球算力需求满足率预计从 2024 年的 79% 降到 2027 年的 71%。
把这几条放在一起读,结论不太舒服:调用量的增速远快于模型能力的迭代速度。每一次工具调用、每一次路由决策,本质都是编排层上的一次状态变更。这也是快手电商导购团队在 QCon 上海把重点放在 Harness 工程体系而不是模型调优的原因——他们遇到的工具数量膨胀、跨域信息冲突、链路超时、错误传播,都不是换个模型能解决的。
Snowflake 在 9 月 21 日的文章里,把「为每个任务挑最合适的模型」做成了网关上的动态路由,并用一个独立模型校验输出质量、形成反馈闭环。当选模型都变成一次编排决策,编排层的数据模型就不再是后台细节,而是成本与延迟的上游。
元数据与运行时数据分离,配合按需加载的轻量蓝图。它同时缓解了内存压力和定义重载两个问题,其余改动基本都建立在这个前提上。
看信号不看绝对值:单次评估要加载的定义超过 1MB、任务条目到数千级、堆占用随运行中流程数量线性上涨、锁重试次数开始爬坡。出现两条以上,就该把状态模型拿出来重画。
先看维护主体。公开版本的开源代码库在 2023 年 12 月已停止维护,团队转向内部分支,社区扩展留在独立的社区仓库。选型时要把「谁在维护、跟着谁的节奏升级」写进评估表,而不是只看 star 数。
状态分层、异步评估、按需加载这三条可以直接搬;调度语义不能照抄——长时运行的智能体任务对超时、重试与副作用的要求,和确定性流程并不一样。
如果你正在评估自建智能体编排平台,或现有引擎已经出现堆压力,可以先从状态模型开始过一遍——蓝曜炬辉(www.lanyaoai.com)的工程团队在做企业系统定制时,通常把这一步放在选框架之前。