? ? ? ? 一個大數據系統架構的設計思想很大程度上受到當時技術條件和思維模式的限制。Lambda架構將批處理層和速度層分為兩層,分別進行離線數據處理和實時數據處理,這樣設計的根本原因在于,Lambda提出的初期是在公司中進行小范圍的業務運用,當時并沒有思考有沒有一個計算引擎能夠在可接受的延遲條件下既進行離線數據處理又進行實時數據處理。在這樣的前提下,將現有的成熟離線處理技術(Hadoop)和實時處理技術(Storm)相結合,用View模型將二者處理數據后得到的輸出結果結合起來,在服務層(Serving?Layer)中進行統一,開放給上層服務,是相當可行且高效的設計方式。
? ? ? ? Kappa架構作者對流處理系統有豐富的理論知識和使用經驗,是Apache?Kafka和Apache?Samza等知名開源處理系統的作者之一。基于對流式計算深入的理解,Kappa架構在同一層次內進行實時處理和離線處理,在滿足延遲要求的流式計算技術成熟的前提,比Lambda更優秀。表1從多個維度對Lambda架構和Kappa架構進行了對比分析。
對比內容 | Lambda架構 | Kappa架構 |
---|---|---|
復雜度與開發、維護成本 | 需要維護兩套系統(引擎),復雜度高,開發、維護成本高 | 只需要維護一套系統(引擎),復雜度低,開發、維護成本低 |
計算開銷 | 需要一直運行批處理和實時計算,計算開銷大 | 必要時進行全量計算,計算開銷相對較小 |
實時性 | 滿足實時性 | 滿足實時性 |
歷史數據處理能力 | 批式全量處理,吞吐量大,歷史數據處理能力強 | 流式全量處理,吞吐量相對較低,歷史數據處理能力相對較弱 |