Data Engineering
8 bài viết
Đọc theo series
Stream processing là gì, khác biệt batch vs stream (bounded/unbounded), micro-batch (Spark) vs true streaming, Apache Flink là gì và định vị so với Spark Structured Streaming và Kafka Streams. Kiến trúc runtime JobManager/TaskManager, các tầng API, triết lý streaming-first và bối cảnh phát hiện gian lận ngân hàng.
Chương trình Flink là đồ thị source→transformation→sink. Bài này giải thích logical vs physical/execution graph, DataStream API (source/transform/sink), các phép map/keyBy/reduce/connect/process, parallelism & task slot, operator chaining và cách phân vùng dữ liệu giữa operator.
Bài lõi về xử lý theo thời gian trong Flink: phân biệt event time / processing time / ingestion time, watermark như mốc cân bằng độ trễ vs độ hoàn chỉnh, cách xử lý dữ liệu đến trễ và không thứ tự, các loại window (tumbling/sliding/session/global) cùng window assigner, trigger, evictor, allowed lateness và side output.
Trạng thái (state) là siêu năng lực của Flink: nhớ thông tin giữa các sự kiện để đếm luỹ kế, dedup, join luồng, phát hiện mẫu. Bài giải thích keyed state vs operator state, hai state backend (HashMap vs RocksDB), cơ chế checkpoint theo thuật toán Chandy-Lamport/barrier để khôi phục sau sự cố, savepoint để nâng cấp job, state TTL, exactly-once và schema evolution.
Làm streaming bằng SQL quen thuộc: dynamic table, stream-table duality, continuous query và changelog (append/upsert/retract). Định nghĩa nguồn/đích bằng CREATE TABLE + connector + WATERMARK, window TVF (TUMBLE/HOP/CUMULATE), các loại JOIN luồng, temporal/lookup join làm giàu tỷ giá, tích hợp Flink CDC, MATCH_RECOGNIZE và catalog.
Bài giải thích ba mức delivery guarantee (at-most-once, at-least-once, exactly-once) và làm rõ exactly-once là về EFFECT chứ không phải xử lý vật lý một lần. Đi sâu cơ chế Flink đạt end-to-end exactly-once: checkpoint nhất quán + nguồn replay được + sink 2PC/idempotent, so sánh barrier alignment với unaligned checkpoint, restart strategy, và cách phát hiện/xử lý backpressure.
Đưa Flink vào production: ba chế độ triển khai (session, per-job, application), nền tảng chạy (standalone, YARN, Kubernetes qua Flink Operator), cấu hình task slot và bộ nhớ TaskManager, mở rộng/rescaling qua savepoint và autoscaling, nâng cấp job an toàn, giám sát bằng Web UI và Prometheus, high availability và xử lý sự cố thường gặp khi vận hành cụm giám sát giao dịch 24/7.
Bài tổng kết series: các use case Flink trong ngân hàng — phát hiện gian lận real-time, giám sát AML (velocity/structuring), Complex Event Processing qua Flink CEP và MATCH_RECOGNIZE, phân tích/dashboard, làm giàu luồng và real-time feature. Kèm kiến trúc tham chiếu Kafka→Flink→cảnh báo/phân tích, bảng so sánh Flink vs Spark Streaming vs Kafka Streams, cạm bẫy production và một truy vấn velocity chạy được.