Zeebe与Kafka的天作之合:将Zeebe工作流引擎引入Apache Kafka实现微服务编排 - Bernd Rücker

19-11-19 banq

Zeebe工作流引擎为什么以及如何与Kafka出色地结合在一起?简要介绍产品并解释联合用例,说明产品可以解决哪些问题,提示技术实施要点。

什么是Zeebe

Zeebe是一个源可用的云原生工作流引擎,主要用于微服务编排。在Zeebe中可以找到很好的介绍。

如果您认为工作流自动化只是关于人工任务和任务列表(=无聊),那是一个错误的印象。它是全自动业务流程的核心,例如订单履行,应用程序管理或索赔管理。例如,我们的客户24小时健身将工作流程用于所有工作:从签订新合同到使用门禁卡甚至为您打开大门。我在5个您可能没有考虑的工作流自动化用例中写了各种用例。

Zeebe基于云原生范例(请参阅我们如何构建高度可扩展的分布式状态机),从而使其能够水平扩展和恢复。

CamundaZeebe背后的开源供应商,提供Zeebe 的企业版以及托管云产品

什么是Kafka

Apache Kafka是高度可伸缩,可恢复且持久的事件总线。它可以用于高吞吐量消息传递,事件驱动的体系结构,作为事件存储或支持事件流体系结构。您可以在Kafka文档中找到一个很好的介绍

为什么集成Zeebe和Kafka

产品不是竞争而是互补。而且,由于这两种工具都具有基本的可伸缩性特征,因此它们都可以在高吞吐量或低延迟的情况下工作,这使其成为天作之合。并且只是为了避免造成任何混乱:即使Zeebe以与Kafka类似的方式利用了许多分布式系统概念,它也不是基于Kafka的,Zeebe可以(并且经常)被单独使用。但是因为产品是免费的,所以客户选择将它们组合在一起。让我们探讨可能的组合方案。

1. 微服务编排

微服务架构中,Kafka用作消息或事件总线,这是环境的通信主干。您必须在该架构之上实现端到端业务流程,通常需要多个微服务的交互。这样,您将需要使用Zeebe进行编排。例如订单履行服务可以利用Zeebe执行订单工作流程,该流程通过Kafka发送命令或等待Kafka中的事件。

2. 根据流的片断采取行动

您可能还拥有以Kafka为中心的流式体系结构。假设您收到付款事件并检查可疑交易。然后,每次有可疑事件需要进一步检查时,您都可以在Zeebe中启动工作流程实例。对于这个简单的用例,您可以使用例如ZeebeKafka连接器

现实生活中另一个有趣的用例是在车辆维护领域。假设您有大量的传感器通过Kafka 不断发送测量值(机油压力为80 psi)。现在,您已经有了一些巧妙的逻辑,可以基于这些度量来生成判断(机油压力非常高)。所有这些判断也都通过Kafka发送。

但是现在您想根据此判断信息采取行动,例如提醒操作人员组织一些维护工作。为此,您必须从无状态事件流的世界进入有状态工作流的世界,从大量信息的世界(度量可能每秒发送)到数量较少的世界,特别是您希望每个洞察仅启动一次工作流程。

在客户项目中,这是通过一个小型连接器完成的,该连接器从Kafka中读取所有记录,并在短时间内在内存中收集它们,并汇总事件以发现要执行的操作,例如启动维护工作流实例。该组件还可以发现油压是否实际上恢复正常,然后将其报告给正在运行的工作流实例。

为了汇总这种判断结果,该项目使用了由业务需求定义的关联标识符,例如,车辆ID +传感器ID +缺陷名称。这使得分类重复项变得容易。

3.通过Kafka发布Zeebe事件

另一个有趣的组合具有完全不同的角度:Zeebe 围绕正在执行的工作流编写了大量审核校订audit信息。许多客户希望将这些数据发布到他们自己的数据湖中,以提供强大的业务报告,例如根据客户所在的国家/地区完成订单需要多长时间,或者是否满足某些SLA。Zeebe的体系结构可以轻松地将一些(或全部)事件发送到您想要的任何地方,而Kafka可以轻松地将甚至大量事件可靠地传输到目的地。

现在,让我们快速查看Apache Kafka与Zeebe的三个主要联系点,以更好地理解我们如何实现上述用例:

  1. 从Kafka中摄取消息(或事件)到Zeebe中
  2. 从Zeebe将消息(或事件)发布到Kafka上
  3. 将Kafka用作Zeebe历史事件的骨干

详情图片点击标题见原文

 

                   

猜你喜欢