架构风格与模式58 条

工作流与编排引擎

把长流程的状态、重试、超时与补偿交给引擎管理,业务代码只实现步骤逻辑;代表实现包括 Temporal、Camunda、Airflow 等,需评估引擎自身的高可用与升级成本。

工作流引擎是什么

工作流引擎把长流程的状态、重试、超时与补偿交给引擎管理,业务代码只实现单个步骤的逻辑。核心能力是持久化执行:引擎把每一步的执行结果落盘,进程崩溃或重启后能从上次完成的位置继续,不必从头重跑整个流程。

什么时候该用

流程跨越多个服务、持续数分钟到数天、需要人工介入或定时等待时,引擎的价值最明显。反过来,高频短任务放进引擎,吞吐与成本都不划算,用消息队列加幂等消费更简单。判断标准可以概括为一句:流程需要被持久记住状态,就值得交给引擎。

基本信息

核心能力持久化执行状态、可靠重试、定时与人工任务、可视化追踪
典型场景订单履约、审批流、数据管道调度
选择要点语言生态、状态存储、运维与可观测性
自建代价状态存储与故障恢复逻辑复杂,通常不建议自研

选型评估维度

维度核对点
状态存储独立数据库或集群,备份与恢复需要演练
版本兼容流程定义升级策略与历史实例的兼容方式
调度能力定时、延迟、重试与人工任务是否原生支持
可观测性实例检索、卡单定位与审计日志
语言生态团队技术栈是否有成熟的客户端与长期维护

典型使用场景

  • 订单履约:拆单、扣库存、发货、通知按步骤编排
  • 审批流:人工审批节点与超时催办
  • 数据管道调度:按依赖关系触发批处理任务
  • 对账与补偿:失败步骤自动重试并触发补偿逻辑
  • 跨服务长事务:用补偿替代分布式事务
编排引擎会成为关键基础设施:它的可用性、数据备份与版本兼容必须纳入架构评审,否则引擎故障等于全部业务流程停摆。

易错点

  • 流程定义与业务代码版本不同步,升级后历史实例无法继续执行
  • 把高频短任务也放进编排引擎,吞吐与成本都不划算
  • 步骤实现不幂等,引擎重试时产生重复业务动作
  • 流程定义变更未做兼容设计,历史实例卡在已删除的节点上
  • 缺少实例检索与告警,流程静默卡住数天后才被发现

数据来源与参考

  • Temporal 官方文档(docs.temporal.io)
  • Camunda 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌