1. 12:12 14/10/2026
**Tổng quan**
Trong nhiều ứng dụng thực tế — phát hiện gian lận thẻ tín dụng, gợi ý nội dung thời gian thực, dự đoán nhu cầu kho hàng — mô hình cần học liên tục từ luồng dữ liệu mới thay vì huấn luyện lại theo batch định kỳ. Bài viết này chia sẻ quy trình xây dựng một pipeline streaming end‑to‑end sử dụng Apache Flink để ingest, tiền xử lý và windowing dữ liệu, sau đó đẩy các mini‑batch vào TensorFlow để cập nhật trọng số mô hình (online learning).
**Kiến trúc chính**
1. **Source**: Kafka topic chứa sự kiện người dùng (click, transaction, sensor).
2. **Flink Job**:
- Deserialize JSON → POJO.
- Lọc, làm sạch, feature engineering nhẹ (scaling, encoding).
- Sử dụng **KeyedProcessFunction** để giữ state per‑user / per‑item.
- Cửa sổ trượt (sliding window) 5 phút, emit mini‑batch 256 samples.
3. **Sink → TensorFlow Serving**: Flink async I/O gọi gRPC endpoint `/model/update` của TensorFlow Serving (hoặc TF‑Parameter‑Server) với payload mini‑batch.
4. **Model Update**: TensorFlow thực hiện một bước gradient descent (optimizer Adam, learning‑rate nhỏ) trên mini‑batch, cập nhật biến checkpoint.
5. **Monitoring**: Prometheus scrape metrics từ Flink (throughput, latency) và TensorFlow (loss, gradient norm). Grafana dashboard cảnh báo khi loss tăng bất thường.
**Ví dụ mã Flink (Java/Scala)**
```java
DataStream<Event> events = env.addSource(new FlinkKafkaConsumer<>(...));
DataStream<MiniBatch> batches = events
.keyBy(Event::getUserId)
.window(SlidingEventTimeWindows.of(Time.minutes(5), Time.minutes(1)))
.process(new MiniBatchBuilder());
batches.addSink(new TensorFlowAsyncSink(tfServingHost, tfServingPort));
```
**Lời khuyên áp dụng**
- **State backend**: Chọn RocksDB state backend cho Flink để chịu được state lớn per‑key mà không OOM.
- **Checkpointing**: Bật checkpoint mỗi 30 giây, exactly‑once, để khôi phục mô hình sau failure.
- **Learning‑rate schedule**: Giảm dần learning‑rate theo số bước cập nhật để tránh divergence.
- **Schema evolution**: Dùng Avro/Protobuf cho Kafka, Flink tự động xử lý schema change.
- **Testing**: Chạy integration test với Testcontainers (Kafka + Flink mini‑cluster + TF Serving) trước khi deploy production.
**Kết luận**
Kết hợp Flink (xử lý streaming mạnh, stateful) với TensorFlow (cập nhật gradient nhanh) cho phép mô hình thích ứng gần real‑time mà không cần pipeline batch phức tạp. Việc giám sát chặt chẽ loss và latency đảm bảo hệ thống ổn định khi dữ liệu thay đổi phân phối.