Apache Kafka能用于工作流编排引擎吗?


BPMN或类似的流程图很适合于业务流程的建模。业务和技术团队很容易理解可视化的内容。它记录了业务流程,便于以后的修改和重构。各种工作流引擎解决了自动化问题:BPMS,RPA工具,ETL和iPaaS数据集成平台,或数据流。

这篇博文探讨了几个案例,其中Kafka被用作可扩展和可靠的工作流引擎来实现业务流程的自动化。
但是这并不总是最好的选择。
人与人之间的互动,长期运行的流程,或复杂的工作流逻辑等选择Kafka以外的专用工具,可能反而更好。
同时,确保你了解像SAGA这样的底层设计模式,评估像Camunda这样的专用协调和BPM引擎,并为工作选择合适的工具。

Salesforce令人印象深刻的例子证明了Kafka可以而且应该作为一个可扩展的、可靠的工作流和有状态的协调引擎用于适当的用例。

Salesforce:网络规模的 Kafka 工作流引擎
Salesforce构建了一个由 Kafka 提供支持的可扩展实时工作流引擎。
在 Current 2022,Salesforce 展示了他们使用有状态 Kafka 引擎实现工作流和流程自动化的项目。

Salesforce 引入了工作流引擎概念,仅使用 Kafka 来持久化状态转换和执行结果。该系统依靠 Kafka 的高可靠性、事务性和高规模来保持较低的设置和运营成本。第一个目标用例是持续集成 (CI) 系统。

关于 Salesforce 指出使用 Kafka 而不是其他数据库或 CI/CD 工具的优势的一些说明:

  • 唯一有状态的组件是 Kafka -> 主要的可靠性设置
  • Kafka 被选为持久层-> SLA/可靠性优于数据库/分片 Jenkings/NoSQL -> 四个九(+水平扩展)而不是三个九(参见幻灯片“可靠性对比”)
  • 轻松重启 K8S 集群和 CI 工作流
  • Kafka State Topic -> 在每条消息中存储完整的工作流图(具有定义模式的工作流 Protobuf)
  • Compacted Topic 更新状态:未启动、正在运行、已完成 -> 跟踪、管理和计算状态机转换

Salesforce 的实现是开源的,可以在 Github 上找到:“Junction Workflow 是一个即将推出的工作流引擎,它使用压缩的 Kafka 主题来管理用户传递给它的工作流的状态转换。它旨在采用多种工作流定义格式。”

Swisscom Custodigit:通过有状态的数据流和编排保护加密投资

Custodigit 是数字资产和加密货币的现代银行平台。它为受到严格监管的加密投资提供了重要的功能和保证:

  • 安全存储钱包
  • 在区块链上发送和接收
  • 通过经纪人和交易所进行交易
  • 受监管的环境(一个关键方面,因为该产品来自瑞士,这不足为奇;一个非常受监管的市场)

通过 SAGA 模式,Custodigit 利用 Kafka Streams 进行有状态编排。
Custodigit微服务架构使用微服务与金融经纪人、股票市场、加密货币区块链(如比特币)和加密货币交易所集成

Swiss Mobiliar:解耦和工作流编排
Swiss Mobiliar(Schweizerische Mobiliar,又名 Die Mobiliar)是瑞士历史最悠久的私人保险公司。由 Apache Kafka 和Kafka 提供支持的事件流支持 Swiss Mobiliar 的各种用例

  • 用于跟踪计费过程状态的协调器 Orchestrator 应用程序
  • Kafka 作为数据库,Kafka Streams 用于数据处理
  • 跨合约和重新计算的复杂状态聚合
  • 实时持续监控

Kestra:开源 Kafka 工作流引擎和调度平台
Kestra 是一个无限可扩展的编排和调度平台,可以创建、运行、调度和监控数百万个复杂的管道。该项目是开源的,可在 GitHub 上获取

  • 任何类型的工作流:工作流可以从简单开始,然后发展到具有分支、并行、动态任务、流依赖性的更复杂的系统
  • 易于学习:流程采用 YAML 中定义的简单描述性语言——您无需成为开发人员即可创建新流程。
  • 易于扩展:插件在 Kestra 中随处可见,Kestra 核心团队提供了许多插件,但您可以轻松创建一个。
  • 任何触发器:Kestra 本质上是基于事件的——您可以从 API、计划、检测、事件触发执行
  • 丰富的用户界面:内置的 Web 界面允许您创建、运行和监控所有流程——无需部署您的流程,只需对其进行编辑。