lambda架構從這點出發, 有兩套解決辦法, 正如圖上的兩條分支, 一條叫Speed Layer 顧名思義 快速的處理實時數據以供查詢, 而另一條分支, 又分作兩層(Batch Layer & Serving Layer) 處理那些對時效性要求不高的數據。
Speed Layer處理實時數據 代價是對計算資源要求很高, 而且邏輯復雜度也會很高, 通常采用的技術比如Redis,Storm,Kafka,Spark Streaming等。而另外兩層使用的典型技術比如MR或Spark,Hive。這條路線處理延遲比較大, 結果邏輯相對簡單,往往把它的處理叫做“離線處理”, 與Speed Layer的“實時處理”相對應。這種設計被稱作:Complexity Isolation(復雜度分離)。
兩者其實是相輔相成的, Batch Layer會持續地吸收增量數據加以處理(比如漸變維度,增加索引,劃分分區,預計算聚合值等操作), 當新增數據被Batch Layer處理完成后, 它們的分析就不再由Speed Layer處理了(交由Serving Layer處理),所以保證了Speed Layer處理的歷史數據量永遠不會太大,畢竟對于Speed Layer來說 “快” 是關鍵。