iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

經過這些天對 Flink 生態系統的深入學習,從基礎概念到 Kafka、Iceberg、Paimon 等技術棧,我們見識了 Flink 的強大能力。但作為一個在實際工作中使用過 Flink 的工程師,我必須誠實地分享:技術再強大,如果開發和維護成本過高,在商業環境中就不一定是最佳選擇。

今天我們要聊聊 Flink 在實際使用中的痛點,以及為什麼越來越多團隊開始考慮 RisingWave 這樣的新一代流處理引擎。

RisingWave:新一代 SQL-First 流資料庫

什麼是 RisingWave?

RisingWave 是一個流式資料庫(Streaming Database),採用 PostgreSQL 兼容的 SQL 語法,專為簡化實時數據處理而設計。

RisingWave Architecture:
┌───────────────────────────────────────────────┐
│          PostgreSQL-Compatible                │
│            SQL Interface                      │
└─────────────────────┬─────────────────────────┘
                      │
┌─────────────────────▼─────────────────────────┐
│              Compute Layer                    │
│         (Rust-based Stream Engine)            │
└─────────────────────┬─────────────────────────┘
                      │
┌─────────────────────▼─────────────────────────┐
│              Storage Layer                    │
│      (S3-Compatible Object Storage)           │
└───────────────────────────────────────────────┘

核心設計理念

  • SQL-First:一切都通過標準 SQL 完成,無需學習複雜的 API
  • 雲原生架構:計算存儲分離,彈性擴展,成本更低
  • 流式資料庫:不只是處理引擎,更是可查詢的資料庫

RisingWave 的關鍵優勢

1. 效能優勢:為什麼更快?

  • 基於 Rust 的架構:RisingWave 採用 Rust 全新構建,最大程度地減少了對第三方 JVM 元件的依賴。這在計算層提供了固有的效能優勢。
  • 直接 SQL 最佳化:RisingWave 直接最佳化 SQL 查詢,實現高效的效能調整。
  • 運算感知儲存:RisingWave 的自訂儲存實作能夠感知運算,透過利用遠端儲存(例如 S3、HDFS)來實現智慧狀態管理並降低儲存成本。

從官方效能對比來看

效能對比 (Nexmark Benchmark):
┌─────────────────────────────────────────────────────┐
│ RisingWave outperformed in 22 out of 27 queries     │
│ Average performance: 12 queries improved ≥50%       │
└─────────────────────────────────────────────────────┘

2. 維護友好:為什麼更容易管理?

架構簡化

Traditional Flink Architecture:

Raw Kafka ──► Flink #1 ──► Kafka Bronze
                               │
                               ▼
                         Flink #2 ──► Kafka Silver
                                         │
                                         ▼
                                   Flink #3 ──► Kafka Gold
                                                   │
                                                   ▼
                                         External Query System
                                            (OLAP DB)

RisingWave Unified Architecture:

Raw Data ──► ┌────────────────────────────┐
             │          RisingWave        │
             │                            │
             │ Bronze ──► Silver ──► Gold │
             │   ▲          ▲         ▲   │
             │   │          │         │   │
             │   └── SQL Query Access ┘   │
             └────────────────────────────┘

維護優勢

  • 單一系統:減少組件間的協調和配置複雜度
  • PostgreSQL 生態:可直接使用現有的 PostgreSQL 工具和監控系統

3. 狀態管理:無痛的分散式狀態

RisingWave 的三層狀態架構

RisingWave 採用獨特的三層狀態管理架構,通過 Hummock 存儲引擎實現高效的狀態管理:

RisingWave State Management (3-Tier Architecture):
┌─────────────────────────────────────────────────────┐
│ Layer 1: Memory (Hot Data)                          │
│ • Hottest data resides in memory                    │
│ • Provides lowest latency access                    │
└─────────────────────┬───────────────────────────────┘
                      │ Auto Flush
┌─────────────────────▼───────────────────────────────┐
│ Layer 2: Local Disk (Warm Data)                     │
│ • SSD local cache                                   │
│ • Balances performance and cost                     │
└─────────────────────┬───────────────────────────────┘
                      │ Periodic Sync
┌─────────────────────▼───────────────────────────────┐
│ Layer 3: S3 Object Storage (Cold Data)              │
│ • Permanent persistent storage                      │
│ • Unlimited scalability                             │
└─────────────────────────────────────────────────────┘

與 Flink 1.x 的狀態管理對比

Flink State Management:
┌─────────────────────────────────────────────────────┐
│ RocksDB Local State → Periodic Checkpoint → S3      │
│                                                     │
│ Issues:                                             │
│ • Only two layers: local state + checkpoint         │
│ • Checkpoint is time-consuming, affects real-time   │
│ • Recovery requires loading all state from S3       │
└─────────────────────────────────────────────────────┘

Hummock 存儲引擎的關鍵特性

  • LSM-Tree 優化:針對流式寫入優化
  • 自動分層管理:根據數據熱度自動在三層間移動
  • 快速恢復:基於三層架構,故障恢復時間可預測且極短
    • Flink 需要從 S3 重新加載全部狀態到本地,耗時可能數小時
    • RisingWave 只需重建內存層,恢復時間通常幾秒到幾分鐘
  • 透明狀態管理:開發者無需關心狀態的存儲和恢復
  • 無限擴展:基於物件存儲,狀態大小無限制

4. 可查詢性:真正的流式資料庫

PostgreSQL 兼容性

-- 創建 Materialized View
CREATE MATERIALIZED VIEW user_stats AS
SELECT 
    user_id,
    COUNT(*) as order_count,
    SUM(amount) as total_amount,
    AVG(amount) as avg_amount
FROM orders
GROUP BY user_id;

-- 直接查詢實時結果
SELECT * FROM user_stats WHERE user_id = 12345;

查詢優勢

  • 實時查詢:Materialized View 即時更新,查詢延遲極低
  • 標準 SQL:支援複雜的分析查詢、JOIN、Window Functions
  • 高併發:支援大量並發查詢,適合服務化場景

實際搬遷架構參考

在了解了 RisingWave 的技術優勢後,讓我們看看如何將實際的業務場景從 Flink 遷移到 RisingWave。

從 Day 24 Flink Pipeline 到 RisingWave 的轉換

回顧我們在 Day 24 討論的複雜 Flink SQL Pipeline:多流 JOIN、狀態管理、歷史數據補償等挑戰。現在讓我們看看同樣的業務邏輯在 RisingWave 中如何實現:

RisingWave Optimized Architecture:

Orders Stream ──┐            ┌── OrderDetail Stream
                │            │
                ▼            ▼
      ┌─────────────┐ ┌─────────────┐
┌────►│Bronze Orders│ │Bronze Detail│◄─┐
│     │(All History)│ │(All History)│  │
│     └──────┬──────┘ └──────┬──────┘  │
│            │               │         │     State:
│            ▼               ▼         │   ┌─────────┐
│   ┌─────────────────────────────┐    │   │ Memory  │
│   │ [INTERVAL JOIN: 1h window]  │────┼──►│ (Hot)   │
│   │   Stateful computation      │    │   └────┬────┘
│   └─────────────┬───────────────┘    │        │
│                 │                    │        ▼
│                 ▼                    │   ┌─────────┐
│   ┌────────────────────────────┐     │   │ Disk    │
│   │    [Historical Lookup]     │     │   │ (Warm)  │
│   │  Need historical data?     │     │   └────┬────┘
│───│───────LOOKUP JOIN ─────────┼─────│        │
    │                            │              ▼
    └────────────────────────────┘         ┌─────────┐
                │                          │ S3      │
                │                          │ (Cold)  │
                │                          └─────────┘
                │
                ▼
      ┌─────────────────┐     ┌──────────┐
      │ Silver Wide     │◄────│   psql   │
      │                 │     │  Query   │
      └─────────┬───────┘     └──────────┘
                │
                ▼
      ┌─────────┼────────────┐
      │         │            │
      ▼         ▼            ▼
  ┌─────────┐┌─────────┐┌─────────┐
  │ Gold A  ││ Gold B  ││ Gold C  │
  └────┬────┘└────┬────┘└────┬────┘
       │          │          │
       └──────────┼──────────┘
                  ▼
             ┌──────────┐
             │   psql   │
             │  Query   │
             └──────────┘

關鍵改進點分析

這個 RisingWave 架構相比傳統 Flink 方案實現了以下重要改進:

1. 統一查詢能力:真正的流式資料庫

所有層級都可直接查詢

  • Bronze Tables:歷史數據可隨時通過標準 SQL 查詢
  • Silver Wide Table:處理後的近期數據支援即時查詢
  • Gold Tables:最終業務表支援高併發查詢服務

2. 三層狀態管理:無痛的故障恢復

智能分層存儲

  • Memory (Hot):最常用數據駐留內存,提供毫秒級訪問
  • Local Disk (Warm):中等熱度數據存於本地 SSD,平衡性能與成本
  • S3 Storage (Cold):所有狀態自動持久化,無限擴展能力

3. 歷史數據補償革新

歷史數據補償通過 LOOKUP JOIN 直接訪問 Bronze 表,無需 Redis/KV

傳統方案困境

Flink Pipeline → 發現需要歷史數據 → LOOKUP JOIN Redis/KV

RisingWave 解決方案

RisingWave Pipeline → 需要歷史數據 → LOOKUP JOIN Bronze 表

核心優勢

  • 無額外維護:不需要維護 Redis 或 KV 等外部緩存系統
  • 查詢即時性:基於 LSM-Tree 的存儲引擎提供快速的點查詢能力

4. 開發與運維簡化

開發體驗

  • Flink:需要學習 DataStream API、Table API、狀態管理、Checkpoint 配置
  • RisingWave:純 SQL 開發,熟悉 PostgreSQL 即可上手

運維複雜度

  • Flink 架構:Kafka + Flink + Redis/KV + OLAP Database(4套系統)
  • RisingWave 架構:Kafka+ RisingWave

總結

從 Flink 到 RisingWave 的考慮,反映了流處理技術的一個重要趨勢:從追求技術的極致靈活性,轉向追求開發效率和維護簡便性。

在實際的技術選擇中,我們常常面臨一個根本性的問題:技術的先進性和團隊的駕馭能力之間如何平衡?Flink 無疑是一個技術成熟、功能強大的流處理引擎,擁有豐富的生態系統和大量的企業級應用案例。但正如我們在這些天的學習中所體會到的,掌握 Flink 需要深入理解分散式系統、狀態管理、時間語義等複雜概念,這對團隊的技術水平提出了很高要求。

RisingWave 的出現提供了一個不同的思路。它選擇了用熟悉的 SQL 語言來降低學習門檻,用統一的流式資料庫架構來簡化系統複雜度,用三層狀態管理來提升故障恢復能力。這種設計哲學體現了一個重要觀念:對於大多數業務場景,簡單可靠往往更重要。

透過這些天的深入學習,我們見證了流處理技術的快速演進。從 Kafka 到 Flink 展現的強大處理能力,再到 Iceberg 和 Paimon 帶來的存儲創新,以及 RisingWave 提出的簡化理念,每一項技術都在解決特定的問題,滿足不同的需求。重要的是培養分析問題本質的能力,根據具體的業務場景和團隊情況,做出最合適的技術選擇。

Day 28 預告:前沿技術探索 - Flink 2.0 + Fluss

流處理領域的發展從未停歇。Apache Flink 社群於2025年已發布下一代的 Flink 2.0,同時一個名為 Fluss 的新項目也正在嶄露頭角。這些前沿技術又會為流處理領域帶來什麼新的可能性呢?


上一篇
【知其然,更知其所以然】Day 26: Flink Paimon
下一篇
【知其然,更知其所以然】Day 28: Flink 2.0 + Fluss
系列文
「知其然,更知其所以然:什麼是 Real-time (Streaming) Pipeline?從造輪子到 Flink 與 RisingWave」30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言