使用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。
步驟:
- 使用Zeebe Modeler建立您的工作流程定義
- 使用`zbctl`來部署和建立工作流例項
- 使用Zeebe Client依賴項建立一個Spring Boot專案以實現3個worker
- 資料將傳送到Elastic Search
- 您可以使用Zeebe Operate監視工作流例項(執行)
以下儲存庫包含有關如何在您自己的環境中從頭啟動並執行示例的說明。
https://github.com/salaboy/zeebe-k8s-getting-started/
示例Spring Boot Zeebe Workers的原始碼可以在這裡找到:
相關文章
- 在Spring Boot應用程式中使用Kubernetes ConfigMapSpring Boot
- 使用谷歌Skaffold在Kubernetes上進行Spring Boot應用程式的CI / CD工作流程 - foojay谷歌Spring Boot
- 使用Spring Cloud Kubernetes基於Kubernetes、Spring Boot和Docker構建微服務架構 - MoriohCloudSpring BootDocker微服務架構
- spring boot + vue + element-ui全棧開發入門——基於Electron桌面應用開發Spring BootVueUI全棧
- 使用SDM快速部署Spring Boot應用到KubernetesSpring Boot
- 用Spring Boot顛覆Java應用開發Spring BootJava
- 用於Spring Boot開發的VSCode設定 - StefanSpring BootVSCode
- 基於spring-boot&spring-data-jpa的web開發環境整合SpringbootWeb開發環境
- 基於spring boot 及mybatis的web開發環境搭建Spring BootMyBatisWeb開發環境
- 10個用於開發Spring Boot的最佳Eclipse外掛Spring BootEclipse
- 基於springmvc+spring-data-jpa+dubbo開發web應用SpringMVCWeb
- 使用Zeebe實現微服務工作流編排 - Berndruecker微服務
- 基於Spring Batch的Spring Boot的教程 - BaeldungBATSpring Boot
- 《Spring Boot從零開始學(視訊教學版)》快速入門Spring Boot應用開發Spring Boot
- 在 Kubernetes 上使用Spring Boot+ActiveMQSpring BootMQ
- spring boot基於Java的容器配置Spring BootJava
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- 使用Spring Boot開發Web專案Spring BootWeb
- 使用Confluent Kafka,KSQL,Spring Boot和分散式SQL開發物聯網應用程式KafkaSQLSpring Boot分散式
- 使用Prometheus和Grafana監控Spring Boot應用PrometheusGrafanaSpring Boot
- Spring Boot中如何使用Ostara監控應用?Spring Boot
- 破解Kubernetes應用開發困局
- Epinio:Kubernetes 的應用程式開發引擎
- Spring Boot應用在kubernetes的sidecar設計與實戰Spring BootIDE
- Spring Boot 的 Web 開發Spring BootWeb
- 居然僅用瀏覽器,就完成了Spring Boot應用的開發與部署!瀏覽器Spring Boot
- Spring Boot 應用程式中的 QueryDSLSpring Boot
- 高效開發 Dubbo?用 Spring Boot 可得勁!Spring Boot
- 基於Spring Boot傳送 mailSpring BootAI
- 使用 JWT 身份驗證保護你的 Spring Boot 應用JWTSpring Boot
- 使用混沌候攻擊測試Spring Boot應用Spring Boot
- 使用 SAP BTP 建立一個 Spring Boot Java 應用Spring BootJava
- 使用Spring Boot, Istio和Cert Manager實現Kubernetes的HTTPSSpring BootHTTP
- 基於Yii2的應用開發引擎RageFrame
- 基於Laravel 5.4 開發單頁應用Laravel
- 基於PostgreSQL進行Java應用開發SQLJava
- 使用Spring Security 6.1及更高版本保護Spring Boot 3應用Spring Boot
- 乾貨|EasyMR 基於 Kubernetes 應用的監控實踐