Bỏ qua

Streaming nâng cao: Flink, Exactly-once, Watermark

🟡 Trung bình · Streaming / Kafka


Tiêu chí Spark Structured Streaming Apache Flink
Mô hình Micro-batch True streaming (từng event)
Độ trễ Giây Mili-giây
State Cơ bản Mạnh (RocksDB backend)
Exactly-once Có (checkpoint) Có (checkpoint + 2PC)
Khi nào chọn Team đã dùng Spark; độ trễ chấp nhận giây-phút Cần low latency (mili-giây); true streaming; state management phức tạp

Quy tắc chọn lựa

  • Chọn Flink khi: cần độ trễ mili-giây, true streaming, state management mạnh (RocksDB), xử lý event phức tạp
  • Chọn Spark khi: team đã dùng Spark cho batch (tái sử dụng code/skill), độ trễ giây-phút là chấp nhận được

Exactly-once vs At-least-once

  • At-least-once: Xử lý ≥ 1 lần. Có thể trùng → cần dedup downstream.
  • Exactly-once: Xử lý đúng 1 lần = Checkpoint + Idempotent write + Transaction.

Watermark

= "Tôi sẽ không chờ event cũ hơn mốc này nữa".

Set lâu hơn → bắt được nhiều late event NHƯNG state giữ lâu → tốn RAM, kết quả ra trễ.

Xử lý Duplicate / Late event / Job chết

Vấn đề Giải pháp
Kafka lag Tăng consumer, tăng partition, tối ưu batch size
Late event Watermark + side output / dead letter queue
Duplicate Dedup theo event ID, idempotent processing
OOM Tăng memory, tối ưu state
Data skew Thay key phân vùng, salting

Comments