Kappa 與 Lambda 架構介紹與對比

Lambda 架構

Lambda 架構由Storm的作者Nathan Marz提出,其設計目的在於提供一個能滿足大數據系統關鍵特性的架構,包括高容錯、低延遲、可擴展等。其整合離線計算與實時計算,融合不可變性、讀寫分離和複雜性隔離等原則,可集成Hadoop, Kafka, Spark,Storm等各類大數據組件。

Lambda 架構可分解爲三層:

  • BACTH LAYER : 利用批處理引擎處理離線數據。
  • REAL-TIME LAYER : 利用實時計算引擎處理實時增量數據流。
  • SERVING LAYER : 合併BATCH LAYER 和REAL-TIME LAYER 的結果數據集,並提供查詢服務。

Kappa 架構

Lambda 架構的一個很明顯的問題是需要維護兩套分別跑在批處理和實時計算系統上面的代碼,而且這兩套代碼得產出一模一樣的結果。
Kappa架構的核心思想包括以下三點:

  • 用Kafka或者類似的分佈式隊列系統保存數據,你需要幾天的數據量就保存幾天。
  • 當需要全量重新計算時,重新起一個流計算實例,從頭開始讀取數據進行處理,並輸出到一個新的結果存儲中。
  • 當新的實例做完後,停止老的流計算實例,並把老的一些結果刪除。

兩種架構比較

對比項 Lambda 架構 Kappa 架構
數據處理能力 可以處理大規模的歷史數據 歷史數據處理的能力有限
機器開銷 批處理和實時計算需一直運行,機器開銷大 必要時進行全量計算,機器開銷相對較小
存儲開銷 只需要保存一份查詢結果,開銷較小 需要存儲新老實例結果,存儲開銷相對較大
開發、測試難度 實現兩套代碼,開發、測試難度較大 只需面對一個框架,開發、測試難度相對較小
運維成本 維護兩套系統,運維成本大 只需維護一個框架,運維成本小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章