Zeebe與Kafka的天作之合:將Zeebe工作流引擎引入Apache Kafka實現微服務編排 - Bernd Rücker
Zeebe工作流引擎為什麼以及如何與Kafka出色地結合在一起?簡要介紹產品並解釋聯合用例,說明產品可以解決哪些問題,提示技術實施要點。
什麼是Zeebe
Zeebe是一個源可用的雲原生工作流引擎,主要用於微服務編排。在Zeebe中可以找到很好的介紹。
如果您認為工作流自動化只是關於人工任務和任務列表(=無聊),那是一個錯誤的印象。它是全自動業務流程的核心,例如訂單履行,應用程式管理或索賠管理。例如,我們的客戶24小時健身將工作流程用於所有工作:從簽訂新合同到使用門禁卡甚至為您開啟大門。我在5個您可能沒有考慮的工作流自動化用例中寫了各種用例。
Zeebe基於雲原生範例(請參閱我們如何構建高度可擴充套件的分散式狀態機),從而使其能夠水平擴充套件和恢復。
Camunda是Zeebe背後的開源供應商,提供Zeebe 的企業版以及託管雲產品。
什麼是Kafka
Apache Kafka是高度可伸縮,可恢復且持久的事件匯流排。它可以用於高吞吐量訊息傳遞,事件驅動的體系結構,作為事件儲存或支援事件流體系結構。您可以在Kafka文件中找到一個很好的介紹。
為什麼整合Zeebe和Kafka
產品不是競爭而是互補。而且,由於這兩種工具都具有基本的可伸縮性特徵,因此它們都可以在高吞吐量或低延遲的情況下工作,這使其成為天作之合。並且只是為了避免造成任何混亂:即使Zeebe以與Kafka類似的方式利用了許多分散式系統概念,它也不是基於Kafka的,Zeebe可以(並且經常)被單獨使用。但是因為產品是免費的,所以客戶選擇將它們組合在一起。讓我們探討可能的組合方案。
1. 微服務編排
微服務架構中,Kafka用作訊息或事件匯流排,這是環境的通訊主幹。您必須在該架構之上實現端到端業務流程,通常需要多個微服務的互動。這樣,您將需要使用Zeebe進行編排。例如訂單履行服務可以利用Zeebe執行訂單工作流程,該流程通過Kafka傳送命令或等待Kafka中的事件。
2. 根據流的片斷採取行動
您可能還擁有以Kafka為中心的流式體系結構。假設您收到付款事件並檢查可疑交易。然後,每次有可疑事件需要進一步檢查時,您都可以在Zeebe中啟動工作流程例項。對於這個簡單的用例,您可以使用例如Zeebe的Kafka聯結器。
現實生活中另一個有趣的用例是在車輛維護領域。假設您有大量的感測器通過Kafka 不斷髮送測量值(機油壓力為80 psi)。現在,您已經有了一些巧妙的邏輯,可以基於這些度量來生成判斷(機油壓力非常高)。所有這些判斷也都通過Kafka傳送。
但是現在您想根據此判斷資訊採取行動,例如提醒操作人員組織一些維護工作。為此,您必須從無狀態事件流的世界進入有狀態工作流的世界,從大量資訊的世界(度量可能每秒傳送)到數量較少的世界,特別是您希望每個洞察僅啟動一次工作流程。
在客戶專案中,這是通過一個小型聯結器完成的,該聯結器從Kafka中讀取所有記錄,並在短時間內在記憶體中收集它們,並彙總事件以發現要執行的操作,例如啟動維護工作流例項。該元件還可以發現油壓是否實際上恢復正常,然後將其報告給正在執行的工作流例項。
為了彙總這種判斷結果,該專案使用了由業務需求定義的關聯識別符號,例如,車輛ID +感測器ID +缺陷名稱。這使得分類重複項變得容易。
3.通過Kafka釋出Zeebe事件
另一個有趣的組合具有完全不同的角度:Zeebe 圍繞正在執行的工作流編寫了大量稽核校訂audit資訊。許多客戶希望將這些資料釋出到他們自己的資料湖中,以提供強大的業務報告,例如根據客戶所在的國家/地區完成訂單需要多長時間,或者是否滿足某些SLA。Zeebe的體系結構可以輕鬆地將一些(或全部)事件傳送到您想要的任何地方,而Kafka可以輕鬆地將甚至大量事件可靠地傳輸到目的地。
現在,讓我們快速檢視Apache Kafka與Zeebe的三個主要聯絡點,以更好地理解我們如何實現上述用例:
- 從Kafka中攝取訊息(或事件)到Zeebe中
- 從Zeebe將訊息(或事件)釋出到Kafka上
- 將Kafka用作Zeebe歷史事件的骨幹
詳情圖片點選標題見原文
相關文章
- 使用Zeebe實現微服務工作流編排 - Berndruecker微服務
- DDD福音:Zeebe是一個類似Kafka的可擴充套件的分散式事件溯源工作流引擎Kafka套件分散式事件
- 微服務中的Kafka與Micronaut微服務Kafka
- 使用Apache Kafka實現從單體到事件驅動微服務 - swlhApacheKafka事件微服務
- 使用Spring Boot開發基於Kubernetes的Zeebe工作流應用 – SalaboySpring Boot
- Kafka事務實現原理Kafka
- Spring 對Apache Kafka的支援與整合SpringApacheKafka
- Apache Kafka教程--Kafka新手入門ApacheKafka
- Apache Kafka 程式設計實戰ApacheKafka程式設計
- Apache Kafka 12個最佳實踐ApacheKafka
- Kafka實戰(三) - Kafka的自我修養與定位Kafka
- Apache Kafka 的基本概念ApacheKafka
- StreamNative將Kafka整合到基於Apache Pulsar的雲中KafkaApache
- Apache Kafka的4個混沌工程實驗 | IDCFApacheKafka
- Apache-Kafka簡介ApacheKafka
- 什麼是 Apache Kafka?ApacheKafka
- Apache Kafka設計思考ApacheKafka
- Apache Kafka 移除 ZK ProposalsApacheKafka
- Apache Kafka 3.0.0釋出ApacheKafka
- Wix如何零停機將將2000個微服務遷移到多叢集Kafka?微服務Kafka
- 微服務02 Kafka訊息佇列, Dubbo, Springcloud微服務框架, Nacos微服務Kafka佇列SpringGCCloud框架
- 比較Apache Pulsar 和Apache Kafka:統一排隊和流式傳輸 - splunkApacheKafka
- Apache Pulsar 與 Apache Kafka 在金融場景下的效能對比分析ApacheKafka
- Kafka-on-Pulsar 實現了偏移更好支援kafka - StreamNativeKafka
- 如何建立自定義Apache Kafka聯結器(Kafka Connectors) - PrashannaApacheKafka
- 經驗分享:Apache Kafka的缺點與陷阱 - Emil KoutanovApacheKafka
- Kafka專題:5.kafka冪等傳送與事務Kafka
- Apache Kafka – 叢集架構ApacheKafka架構
- 饒軍:Apache Kafka的過去,現在,和未來ApacheKafka
- Clickhouse Engine kafka 將kafka資料同步clickhouseKafka
- alpakka-kafka(8)-kafka資料消費模式實現Kafka模式
- alpakka-kafka(10)-用kafka實現分散式近實時交易Kafka分散式
- Kafka 入門與實踐Kafka
- Kafka分散式查詢引擎Kafka分散式
- Apache Kafka不是資料庫:資料庫+Kafka=完整ACID - fivetranApacheKafka資料庫
- 使用Kafka實現事件溯源Kafka事件
- Josh Wulf:隨著微服務規模的增加,實現工作流引擎的可能性必然增加?微服務
- Apache Camel與Spring-boot和Kafka的整合開源案例ApacheSpringbootKafka