Bỏ qua

Kafka: Partition, Producer, Consumer, Commit

🟠 Quan trọng · Streaming / Kafka


Các thành phần chính

Thành phần Vai trò
Topic Kênh dữ liệu ("đường ống"). VD: topic "transactions"
Partition Chia topic để song song hóa. Dữ liệu trong partition được sắp xếp theo offset
Producer Gửi (ghi) message vào topic
Consumer Đọc message từ topic
Consumer Group Nhóm consumer cùng đọc 1 topic. Mỗi partition chỉ 1 consumer đọc → không trùng

Chia Partition

  • Có key: hash(key) % num_partitions → cùng key luôn vào cùng partition → đảm bảo thứ tự
  • Không key: Round-robin
  • Số partition >= số consumer trong group để tận dụng song song

Commit là gì?

Consumer đọc xong → commit offset = đánh dấu "đã xử lý đến đây".

Loại Mô tả Rủi ro
Auto-commit Kafka tự commit định kỳ Mất message nếu consumer chết giữa chừng
Manual commit Tự commit sau khi xử lý xong An toàn hơn, nhưng phức tạp hơn

Watermark

Watermark = mốc thời gian để Kafka/Flink biết "sẽ không chờ event cũ hơn mốc này nữa".

  • Set watermark lâu hơn → bắt được nhiều late event hơn, nhưng state giữ lâu → tốn RAM, kết quả ra trễ
  • Set watermark ngắn → kết quả nhanh, nhưng có thể bỏ sót late event

Xử lý Duplicate Event & Late Event

Vấn đề Giải pháp
Duplicate event Dedup theo event ID; idempotent processing (upsert thay vì insert)
Late event Watermark + side output / dead letter queue
Kafka lag Tăng số consumer, tăng số partition, tối ưu batch size

Comments