Skipper,Airbnb 的嵌入式工作流引擎,现已开源 笔记

Skipper,Airbnb 的嵌入式工作流引擎,现已开源

Skipper 是一个开源的嵌入式工作流引擎,直接在服务内部运行,无需独立的编排集群。它允许开发者将多步骤业务流程定义为 Java 或 Kotlin 类。Skipper 会持久化工作流进度,通过复用现有的服务依赖,实现从崩溃和瞬态故障中恢复。该引擎的设计源于 Airbnb 希望服务能够自主管理其工作流,而无需依赖共享的编排基础设施。在 Skipper 的架构中,服务副本托管工作流运行时和调度器,并共享一个数据库来存储工作流状态。如果某个副本发生故障,另一个副本可以接管其工作,接管时机由调度策略和租约设置决定。这种集成方式减少了部署的系统数量,并将工作流执行的责任交由服务团队承担。工作流以类的形式表示,其中“动作(actions)”执行特定任务并记录结果,以便用于恢复。该引擎支持通过信号等待外部事件等功能,并可定义超时时间。幂等性必须由动作自身处理,因为 Skipper 不会向下游系统发起事务性调用。恢复机制基于检查点和重放:中断的工作流将从头重新执行,同时利用已保存的动作结果。确定性工作流代码对于此重放机制至关重要,I/O 操作和随机性必须限制在动作内部。开发者可以选择立即进行检查点记录,以在崩溃后最小化已完成动作的重执行次数。Skipper 非常适合管理多步骤流程的 Java 或 Kotlin 服务,这些流程需要在现有部署中实现持久化执行。开源版本包含核心引擎、数据库适配器、测试工具和后台管理界面。未来的计划包括扩展存储插件支持,并改进工作流演进和调试的工具。欢迎贡献自动化兼容性检查和重放可视化方面的代码。
CdXz5zHNQW_M8DQeN2ZaU.png