船长:构建 Airbnb 的嵌入式工作流引擎
Airbnb 面临复杂工作流(如保险理赔)的持久化执行挑战。现有的外部编排引擎解决方案存在运维复杂和供应商锁定等缺点。为解决这些问题,Airbnb 构建了 Skipper,一种嵌入到每个服务内部的流程引擎。Skipper 强调简洁性、无单点故障以及复用现有数据库。其核心设计包括定义逻辑与动作的工作流,这些工作流封装了单个操作。持久性通过回放机制实现:将动作结果检查点化地写入数据库。回放机制使得工作流在中断后能够从断点处恢复。为提高效率,状态字段被持久化,并通过信号来更新工作流的状态。使用 Skipper 测试工作流更加简便,因为它无需配置队列或模拟任何基础设施。这种方法在确保持久化执行的同时,不引入额外依赖,也不牺牲性能。