- Có rất nhiều lý do để một ứng dụng cần sử dụng đến Kafka, và write message vào hệ thống: recording hoặc động của user cho kiểm kiểm toán hoặc phân tích , recording metrics, store log message, recording thông tin từ điện thoại, giao tiếp giữa các ứng dụng với nhau.
- Đa dạng những trường hợp khác nhau cũng sẽ có nhiều yêu cầu khác nhau, mỗi message hoặc cũng có thể chấp nhận được cho sự mất mát data, cũng như duplication message.
- Trong giao dịch thẻ tín dụng hoặc các giao dịch chuyển tiền, sẽ không bao giờ xảy ra trường hợp mất message hoặc duplication. Độ trễ có thể thấp nhưng không quá 500ms vẫn có thể chấp nhận được và thông lượng xử lý. Ví dụ chúng ta mong muốn 1 giây có thể xử lý khoảng 1 triệu message.
- Trong một số trường hợp khi user click trên page cần được lưu trữ hành động của người dùng lại. Trong một số trường hợp nó sẽ bị mất hoặc bị duplication message vẫn coi là ok. Độ trễ có thể cao miễn là không ảnh hưởng đến trải nghiệm người dùng là được.
- Có một số yêu cầu khác nhau sẽ ảnh hưởng đến cách bạn write message xuống, lúc này sẽ phụ thuộc vào config bạn dùng.
- Để bắt đầu gửi message xuống, bạn cần tạo một topic mà bạn muốn gửi data, có thể chỉ định key cũng như partition. Khi message được gửi xuống producer sẽ serialize key và value của object đến byte-array. Khi data được sent xuống, nếu có chỉ định partition thì sẽ không làm gì cả mà chỉ trả về partition. Còn nếu không chọn partitioner sẽ chọn partition, khi đã chọn xong thì producer đã biết topic và partition sẽ đi đến, nó sẽ add record đến batch của nhiều record và gửi đến topic-partition.
- Khi broker nhận được message nó sẽ trả response, nếu broker write message failed nó sẽ trả về error, và producer sẽ cố thử lại vài lần rồi mới trả về data thành công hoặc thất bại.
Nguồn: viblo.asia