Exactly-once semantics (EOS) đảm bảo mỗi tin nhắn được xử lý đúng một lần — không mất, không trùng lặp — ngay cả với lỗi và retry. Kafka đạt được điều này thông qua producer idempotent và transaction, mặc dù nó phức tạp và có overhead.
Thách thức
Exactly-once là KHÓ trong các hệ thống phân tán (lỗi, retry, trùng lặp là không tránh khỏi):
→ producer retry → tin nhắn trùng lặp; consumer xử lý lại → hiệu ứng trùng lặp
→ at-least-once ngây thơ → trùng lặp; at-most-once → mất mát
→ exactly-once đòi hỏi các cơ chế cẩn thận để tránh CẢ mất mát LẪN trùng lặp.
