還記得上次我們說到:「乾脆把所有邏輯都搬到 Streaming,不就更快?」
在 Lambda 架構裡,我們的數據管道是雙軌制:
Lambda Architecture:
Raw Data ┬ Batch Layer ─ Batch Views ────┐
│ ├ Serving Layer─Query Results
└ Speed Layer ─ Real-time Views ┘
各層職責:
代價:
Kappa 架構的思路很直接:「刪掉 Batch Layer,所有處理統一用 Streaming 完成」
Kappa Architecture:
Raw Data ── Event Log (Kafka) ── Stream Processing ── Results
優勢:只要一份邏輯、一套系統,維護量大幅下降。
如果我們把咖啡店所有需求的處理邏輯全部放在 Streaming:
Kappa 架構在咖啡店的應用:
Order Events ── Kafka ── Stream Processing
│
▼
┌────────────┐
│ • JOIN │
│ • GROUP BY │
│ • ORDER BY │
│ • TopN │
└────────────┘
│
▼
Result Tables
(Pre-computed Results)
│
▼
Dashboard
處理流程:
效果:就算高峰期有每秒上百筆查詢,也只是讀一張結果表,不會壓垮資料庫。
思考一下:「那 JOIN、GROUP BY、滑動窗口統計這些要怎麼做?」
沒錯,這是邁向 Kappa 必須解決的核心 - Stateful 運算。
Stateful Operations Challenge:
Event1 ──┐
Event2 ──┼── [State Storage] ── Computed Results
Event3 ──┘ ↑
│
Need to remember:
• Previous events
• Intermediate results
• Window boundaries
關鍵挑戰:沒有狀態管理,就無法將資料庫的多表 JOIN、聚合邏輯完全搬到流處理裡。
在 Day 12 之後,會陸續講解什麼是狀態運算,並在 Simple Streaming 框架中引入簡單實作的 狀態儲存(State Store),讓它不只是無腦處理事件,而是能像資料庫一樣記住過去發生的事。
這一步,將讓我們的 Streaming Pipeline 正式踏入 Kappa 架構的世界。