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 界面允许您创建、运行和监控所有流程——无需部署您的流程,只需对其进行编辑。