在現代 IT 架構中,實時處理連續(xù)的業(yè)務數據和事件流變得越來越重要。這種類型的架構,其中事件正在構建數據處理的中心,也稱為響應式流架構。在下文中,我將展示如何借助工作流技術解決一些相關挑戰(zhàn)。
讓我們先仔細看看這種類型的架構?;旧希谑录臄祿幚聿⒉恍迈r,實際上已經在各個專業(yè)領域(例如金融部門)中發(fā)展了數十年。但是,自過去幾年以來,出現了處理數據流的新標準。像 Apache Kafka, Storm, Flink, or Spark 的日益普及,推動了新的炒作。
從工業(yè)生產系統(tǒng)到多人電腦游戲,越來越頻繁地使用所謂的流式架構,以便能夠實時處理大數據。流媒體架構已經發(fā)展成為現代科技公司的核心架構元素。在許多公司中,實時流已成為其架構中的核心系統(tǒng)。
目標是能夠更快地集成新的系統(tǒng)解決方案并連接任何類型的數據流。流媒體架構不僅存在于 eBay、Netflix 或亞馬遜等技術巨頭中,而且在今天,每一家致力于業(yè)務流程數字化的現代科技公司都可以使用流媒體架構。那么,構建這樣一個架構的主要挑戰(zhàn)是什么?
處理數據流
在事件流的早期,數據流被記錄并隨后進行分析(批處理),實際業(yè)務邏輯完全不受影響。但是,隨著業(yè)務邏輯變得更加復雜,處理數據變得更加困難。因此,處理數據流的一般任務提出了許多不同的挑戰(zhàn)。
來自不同來源(Producer)的數據需要進行排序、分類并分派到不同的目標(Consumer)。生產者可以生成不同類型的事件,而消費者通常只對可能由不同消費者創(chuàng)建的特定事件感興趣。系統(tǒng)必須能夠以協調的方式對數據進行分區(qū)、結構化和分發(fā)。
為了保證高數據吞吐量,此類系統(tǒng)必須水平擴展。與此同時,Apache Kafka已成為此類技術的事實上的標準。它提供了很大的靈活性,并且可以以多種不同的方式集成到其他系統(tǒng)中。
流分析和業(yè)務處理
但是,捕獲數據流只是挑戰(zhàn)的一部分。某些數據處理必須與傳入數據同時進行,以便能夠迅速將結果用于決策。例如,購物車系統(tǒng)中的產品選擇可以觸發(fā)推薦系統(tǒng)并行執(zhí)行。這種類型的需求在流架構中創(chuàng)建了另一個構建塊——稱為流分析。
有時,來自數據流的單個事件足以觸發(fā)預定義的業(yè)務邏輯。但是,通常需要能夠識別不同事件之間的聯系,以便運行能夠產生實際業(yè)務價值的高級業(yè)務流程。通過在給定的時間段內累積它們,可以在時移的相似事件之間建立這種聯系。例如,在線商店系統(tǒng)中對某種產品的短期需求增加可能會觸發(fā)額外生產線的啟動。在其他情況下,可能需要關聯某些不同類型的事件并合并數據以觸發(fā)相應的業(yè)務流程。這些方法也稱為Windowing和 Joining。
在所有這些情況下,都會實施所謂的微批次來運行流分析模塊內的業(yè)務邏輯。Apache Kafka Streams是Kafka-Stack 中的一個擴展,提供了許多這些功能。它允許使用不同的編程語言(如 Java 或 Scala)開發(fā)微批次。在JavaSpektrum 雜志2021/03版本中之前,來自 Siemens AG 的 George Mamaladze 用更廣泛的方法描述了這個概念。
然而,微批處理帶來了新的挑戰(zhàn)。業(yè)務邏輯不能再用簡單的功能來描述了。例如,需要有狀態(tài)算法來保持一段時間內的數據聚合。另一個要求是這些算法的并行執(zhí)行與相應的狀態(tài)管理。因此,有必要保留這些狀態(tài),并在出現錯誤時在上次中斷的點恢復業(yè)務流程。這種業(yè)務邏輯的實現很復雜,而且通常很耗時。
為了能夠管理更復雜的長期運行的業(yè)務流程,工作流引擎成為實現數據流和業(yè)務邏輯分離的重要構建塊。工作流引擎在處理復雜業(yè)務邏輯和長期保持業(yè)務狀態(tài)方面進行了優(yōu)化。主要區(qū)別在于所有正在運行的微批次的狀態(tài)管理。工作流引擎的模型驅動架構允許快速適應不斷變化的需求和技術。
基于新的傳入事件(由 Micro-Batch 創(chuàng)建),工作流引擎可以啟動新的業(yè)務流程或繼續(xù)已啟動的流程實例。工作流引擎將自動持久化業(yè)務流程的狀態(tài),并可以從不同的生產者收集事件。然而,單個處理步驟的結果或業(yè)務流程的完成也可能產生新事件。
所以,一個內無流架構,將工作流引擎需要的角色消費者和生產者控制業(yè)務流程的整個生命周期。
使用 Imixs-Workflow 進行流分析
Imixs-Workflow是一個開源工作流引擎,提供廣泛的功能來控制復雜的業(yè)務流程?;谑录墓ぷ髁饕婵梢宰鳛槲⒎者\行,并且可以通過其微內核架構進行擴展。Imixs-Workflow 已經帶有一個 Apache Kafka 適配器,它可以很容易地從響應式流媒體平臺開始處理事件。
所述 Imixs-Kafka Adapter 充當卡夫卡堆棧內產生的事件的一個消費者。憑借其 Autowire 功能,Imixs-Workflow 還可以在處理生命周期中自動發(fā)送工作流消息。這允許在分布式微服務架構中構建更復雜的業(yè)務流程。
模型驅動的業(yè)務邏輯
業(yè)務流程建模符號 (BPMN)——當今業(yè)務流程建模的標準——可以幫助以模型驅動的方式構建靈活的架構。BPMN 2.0 是一種基于 XML 的可擴展建模標準,允許對復雜的業(yè)務流程進行建模、分析和執(zhí)行。
在像 Imixs-Workflow 這樣的基于事件的工作流引擎中,業(yè)務流程的不同狀態(tài)被描述為Tasks。從一種狀態(tài)到下一種狀態(tài)的轉換由事件元素描述。事件可以通過使用 Kafka 流事件觸發(fā),也可以由外部服務或人類參與者觸發(fā)。通過將任務和事件與網關元素相結合,可以對業(yè)務規(guī)則進行建模,以根據收集到的數據做出決策并對不同情況做出反應。
聚合流事件
使用工作流引擎使用事件流的優(yōu)點是能夠在特定上下文中長時間聚合數據。數據可以從不同來源聚合和轉換,并與現有業(yè)務數據相結合。
例如,在購物系統(tǒng)中,新客戶的注冊可以觸發(fā) VIP 會員流程。工作流引擎首先僅對新客戶注冊做出反應,以啟動 VIP 會員業(yè)務流程。從這一刻起,工作流引擎會對購物系統(tǒng)中啟用 VIP 會員資格的某些事件做出反應。例如,這可以是購買某些產品或訂閱。
更改業(yè)務邏輯不需要對代碼庫進行任何更改或實現新的微批次。此外,可以在運行時調整新的附加業(yè)務工作流,而無需更改架構。
人工智能
基于 Imixs 微內核架構,可以使用提供附加功能的各種適配器或插件模塊來擴展業(yè)務流程。例如,Imixs-ML 適配器提供了一個通用 API 來集成各種 ML 框架,如 spaCy 或 Apache mxnet。借助這種適配器技術,可以通過人工智能豐富業(yè)務處理。
Imixs-ML 的核心概念基于自然語言處理 (NLP),它是機器學習的一個子領域。使用命名實體識別 (NER),可以分析給定的文本流,并且可以從任何類型的流事件中提取文本實體,例如人員、地點,甚至發(fā)票數據(例如日期和發(fā)票總額)。這種機器學習過程的結果可用于對更復雜的業(yè)務邏輯進行建模,并基于各種訓練模型進行業(yè)務討論。
持續(xù)學習
持續(xù)學習是 ML 訓練模型從數據流中持續(xù)學習的能力。在實踐中,這意味著支持模型在新數據進入時自主學習和適應生產的能力。通過 Imixs-ML 適配器,這個概念被集成到業(yè)務流程的實時周期中。Imixs-Workflow 引擎可以根據業(yè)務流程的結果自動優(yōu)化 ML 訓練模型。通過這種方式,來自事件流平臺的數據可用于生成新的訓練模型以供未來處理。但人工操作員做出的決定也可用于改進現有的 ML 訓練模型。
結論
通過將反應式流架構與現代業(yè)務流程管理的概念相結合,可以在很短的時間內實現高度復雜的業(yè)務流程。得益于基于現代 BPMN 2.0 的工作流技術的模型驅動方法,即使是復雜的業(yè)務流程也可以在不改變整體架構的情況下設計和執(zhí)行。這種類型的架構為處理連續(xù)數據流開辟了全新的可能性。