使用Spring Boot开发基于Kubernetes的Zeebe工作流应用 – Salaboy


这篇博客文章介绍了如何在Kubernetes中使用Zeebe集群以及如何使用Spring Boot构建连接到Zeebe集群的应用程序。
Zeebe是Microservices Orchestration的工作流引擎,它非常易于使用,如果您在Kubernetes中运行,则很幸运,因为它提供了可以在现有集群中安装的Kubernetes Helm Charts
Zeebe的客户端部分还提供了几种使用不同框架和语言的集成,因此无论您使用哪种语言构建应用程序,都可以使用现有客户端之一连接到Zeebe。在这篇博客中,我将介绍Spring Boot集成。

为什么选择Zeebe及其运作方式?
如果您要构建微服务,则迟早会发现需要定义这些服务执行指定任务的顺序。第一种也是最容易实现的方法是对服务内部的执行顺序进行硬编码调用,如果手头的任务是非常技术性的,并且对您的业务并不重要,则可以将此调用顺序硬编码在代码中可能没问题。但是,如果手头的任务对于您的业务而言非常重要,并且需要频繁更改以优化您的业务运作方式,那么您可能想看看Zeebe。
Zeebe允许您定义和执行工作流程定义,以定义调用微服务的顺序和条件。
从非常高的层次来看,Zeebe可以以非常有效和分布式的方式运行这些BPMN工作流,以实现每秒扩展至大吞吐量执行。当其他类似的解决方案依赖于关系数据库来存储工作流状态时,Zeebe使用事件日志,可以将事件日志有效地存储到磁盘,并在必要时通过答复这些事件来完全还原。
从体系结构的角度来看,Zeebe提供了两个主要组件Zeebe Brokers和Zeebe Gateway。Zeebe Brokers(安排在一个集群中,通常称为Zeebe集群)是负责执行工作流程定义的一个个主机实例。Zeebe网关是您的应用程序与这些工作流实例进行交互的单个入口点。
Zeebe Broker负责在我们的工作流程中执行操作,并且它们旨在以非常可扩展的方式来执行此操作。所有查询操作都在Zeebe群集之外进行委派。因此,使用Zeebe Exporters将经纪人中发生的所有操作外部化。常见的导出器是ElasticSearch导出器,它发送要由ElasticSearch索引的所有代理事件。
Zeebe的典型实现如下所示:

  • 您已经在运行现有的服务/微服务
  • 您可以使用Zeebe Modeler或任何其他BPMN建模工具对工作流程进行建模
  • 您创建一个Zeebe群集
  • 您将工作流程模型部署到Zeebe集群
  • 您创建并部署您的工作人员以将您的服务与工作流程执行联系起来
  • 服务或手动有人启动工作流实例

示例入门
这个示例创建了一个非常简单的工作流程定义,并在运行在Kubernetes集群中的Zeebe中运行它。工作流定义定义了3个服务任务,这些任务需要实现三个Zeebe Worker。
要获得Zeebe安装在Kubernetes集群,按照有关如何安装官方的说明中使用helm群集Zeebe
步骤:
  1. 使用Zeebe Modeler创建您的工作流程定义
  2. 使用`zbctl`来部署和创建工作流实例
  3. 使用Zeebe Client依赖项创建一个Spring Boot项目以实现3个worker
  4. 数据将发送到Elastic Search
  5. 您可以使用Zeebe Operate监视工作流实例(执行)

以下存储库包含有关如何在您自己的环境中从头启动并运行示例的说明。
https://github.com/salaboy/zeebe-k8s-getting-started/
示例Spring Boot Zeebe Workers的源代码可以在这里找到:
https://github.com/salaboy/zeebe-worker-spring-boot-example