做持久化工作流,一个 Postgres 就够了

查看原文 HN 讨论

文章摘要

这篇 DBOS 的文章论证:构建持久化工作流(durable workflows),你其实只需要一个 Postgres。持久化执行(durable execution)的本质是周期性检查点(checkpointing)——「程序运行时,定期把进度写到数据库;一旦崩溃或失败,就能从上一个检查点重新加载、从最后完成的那一步恢复」,原理就像玩游戏存档。

文章对比了两种架构。外部编排(external orchestration,如 Temporal、Airflow、AWS Step Functions):由一个中央编排器服务协调全部工作流执行,worker 把每步结果回传给编排器,编排器记录检查点并派发下一步——这套独立系统带来额外的运维复杂度。而 DBOS 的 Postgres 直连方案:应用服务器直接与 Postgres 表通信,客户端通过在 workflows 表里建一条记录来提交工作流,服务器用数据库锁机制协作式地出队(dequeue)工作流,worker 把每步输出直接检查点到 Postgres,无需中央编排器

它列举的关键优势包括:可扩展性——单个 Postgres 实例可处理「每秒数万个工作流」,还能通过分布式或分片 Postgres 进一步扩展;可观测性——工作流数据就在可查询的 Postgres 表里,「几乎任何工作流可观测性查询都能用 SQL 表达」,无需额外系统就能实时监控;可靠性——消除了编排器及其数据存储这两个故障点,缩小了攻击面与运维依赖;协调性——靠 Postgres 的完整性约束保证每个工作流恰好由一个 worker 执行,自动检测并阻止重复工作。

HN 评论精华