Lambda架構主要分為三層,批處理層、加速層和服務層。
如下圖所示:
(1)批處理層(Batch Layer):存儲數據集,在數據集上預先計算查詢函數,并構建查詢對應的view。Batch Layer可以很好地處理離線數據。當很多場景需要實時查詢的時候,則需要Speed Layer
(2)加速層(Speed Layer):batch layer處理的是全體數據集,speed layer處理的是增量數據流。Speed layer接收到數據后會不斷更新Real-time view,而Batch Layer是根據全體離線數據集直接得到Batch View。
(3)服務層(serving layer):Serving layer用于合并Batch View 和Real-time view中的結果數據集到最終數據集。
1、批處理
批處理有兩個核心功能,存儲數據集和生成Batch View。該層主要負責主數據集,主數據集有以下三個屬性:
(1)數據是原始的
(2)數據是不可變的
(3)數據永遠真實的
2、加速層
它存儲實時視圖并傳入數據流,以便更新這些視圖。
Speed Layer和Batch Layer的區別如下:
(1)speed layer處理數據是最近的增量數據流,batch layer是全體數據集。
(2)Speed layer為了效率,接收到新數據時不斷更新Real-time view,而Batch Layer是根據全體離線數據集直接得到Batch View。
分為加速層和批量層的好處有哪些?
容錯性:當speed layer重新計算后,當前的real-time view就可以丟棄,而batch view也是重新計算的。
復雜性隔離:批量處理離線數據很好掌握,加速層處理增量數據隔離出來。
Scale out:橫向擴展,通過增加機器來擴展,而不是增加機器性能scale up。
3、服務層
用于響應用戶查詢,合并batch view和real-time view中的結果集得到最終數據集。該層提供了主數據集上執行的計算結果的低延遲訪問。讀取速度可以通過數據附加的索引來加速。