更新時間:2022-07-01 10:11:46 來源:動力節(jié)點 瀏覽1604次
Lambda 架構(gòu)是一種數(shù)據(jù)處理部署模型,組織使用該模型將傳統(tǒng)批處理管道與快速實時流管道相結(jié)合以進(jìn)行數(shù)據(jù)訪問。它是 IT 和開發(fā)組織工具包中的一種常見架構(gòu)模型,因為面對大量快速生成的數(shù)據(jù)(通常稱為“大數(shù)據(jù)”),企業(yè)努力變得更加數(shù)據(jù)驅(qū)動和事件驅(qū)動。

Lambda 架構(gòu)既包含傳統(tǒng)的批處理數(shù)據(jù)管道,也包含用于實時數(shù)據(jù)的快速流傳輸管道,以及用于響應(yīng)查詢的服務(wù)層。
在上圖中,您可以看到 Lambda 架構(gòu)的主要組件:
數(shù)據(jù)源。數(shù)據(jù)可以從各種來源獲得,然后可以包含在 Lambda 架構(gòu)中進(jìn)行分析。這個組件通常是像 Apache Kafka 這樣的流式源,它本身不是原始數(shù)據(jù)源,而是一個可以保存數(shù)據(jù)的中間存儲,以便為 Lambda 架構(gòu)的批處理層和速度層提供服務(wù)。數(shù)據(jù)同時傳送到批處理層和速度層,以實現(xiàn)并行索引工作。
批處理層。該組件將所有進(jìn)入系統(tǒng)的數(shù)據(jù)保存為批處理視圖,以準(zhǔn)備索引。輸入數(shù)據(jù)保存在一個模型中,該模型看起來像是對記錄系統(tǒng)進(jìn)行的一系列更改/更新,類似于更改數(shù)據(jù)捕獲 (CDC)系統(tǒng)的輸出。通常,這只是逗號分隔值 (CSV) 格式的文件。數(shù)據(jù)被視為不可變且僅追加,以確保所有傳入數(shù)據(jù)的可信歷史記錄。像 Apache Hadoop 這樣的技術(shù)通常被用作一種系統(tǒng),用于以經(jīng)濟高效的方式攝取數(shù)據(jù)以及存儲數(shù)據(jù)。
服務(wù)層。該層對最新的批處理視圖進(jìn)行增量索引,以使其可供最終用戶查詢。該層還可以重新索引所有數(shù)據(jù)以修復(fù)編碼錯誤或為不同的用例創(chuàng)建不同的索引。服務(wù)層的關(guān)鍵要求是以極其并行的方式完成處理,以最大限度地減少索引數(shù)據(jù)集的時間。在運行索引作業(yè)時,新到達(dá)的數(shù)據(jù)將排隊等待在下一個索引作業(yè)中進(jìn)行索引。
速度層。該層通過索引最近添加的尚未被服務(wù)層完全索引的數(shù)據(jù)來補充服務(wù)層。這包括服務(wù)層當(dāng)前正在索引的數(shù)據(jù)以及在當(dāng)前索引作業(yè)開始后到達(dá)的新數(shù)據(jù)。由于最新數(shù)據(jù)添加到系統(tǒng)的時間與最新數(shù)據(jù)可用于查詢的時間之間存在預(yù)期滯后(由于執(zhí)行批量索引工作需要時間),因此取決于速度層索引最新數(shù)據(jù)以縮小這一差距。
該層通常利用流處理軟件近乎實時地索引傳入數(shù)據(jù),以最大限度地減少獲取可用于查詢的數(shù)據(jù)的延遲。首次引入 Lambda 架構(gòu)時,Apache Storm 是部署中使用的領(lǐng)先流處理引擎,但此后其他技術(shù)作為該組件的候選技術(shù)(如Hazelcast Jet、Apache Flink 和 Apache Spark Streaming)越來越受歡迎。
查詢。該組件負(fù)責(zé)向服務(wù)層和速度層提交最終用戶查詢并合并結(jié)果。這為最終用戶提供了對所有數(shù)據(jù)(包括最近添加的數(shù)據(jù))的完整查詢,以提供近乎實時的分析系統(tǒng)。