0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Tìm Hiểu Các Phương Thức Đọc Message Từ Kafka: Hướng Dẫn Chi Tiết Về Consumer

Đăng vào 4 ngày trước

• 2 phút đọc

Các Phương Thức Đọc Message Từ Consumer Kafka

Khi xử lý message từ Kafka, việc quyết định thời điểm commit offsets là rất quan trọng. Các phương thức đọc message khác nhau ảnh hưởng đến thiết kế và hiệu suất ứng dụng của bạn. Dưới đây là những cách thức chính để đọc message từ Kafka.

1. Giao Delivery Tối Đa Một Lần (At Most Once Delivery)

Trong phương thức này, message sẽ được commit tức thì khi vừa được nhận. Tuy nhiên, nếu có lỗi xảy ra trong quá trình xử lý, message đó sẽ bị mất hoàn toàn. Điều này phù hợp cho các ứng dụng cho phép mất dữ liệu, nơi tốc độ ưu tiên hơn độ tin cậy.

2. Giao Delivery Ít Nhất Một Lần (At Least Once Delivery)

Đây là phương thức thường được sử dụng nhất. Với giao thức này, mỗi message sẽ được đọc ít nhất một lần. Việc trùng lặp message có thể xảy ra nếu một message gặp sự cố khi xử lý và cần phải đọc lại. Đối với những hệ thống yêu cầu độ tin cậy cao và không được phép mất message, phương thức này rất phù hợp. Để đảm bảo không gặp vấn đề trùng lặp, bạn nên sử dụng Idempotent Processing:

Copy
Idempotent Processing: Đảm bảo rằng việc xử lý lại message sẽ không ảnh hưởng đến hệ thống của bạn.

3. Giao Delivery Chính Xác Một Lần (Exactly Once Delivery)

Một số ứng dụng yêu cầu không chỉ phải đọc message ít nhất một lần mà còn cần đảm bảo rằng mỗi message chỉ được xử lý chính xác một lần duy nhất. Chế độ này hết sức cần thiết cho các ứng dụng như API thanh toán, nơi yêu cầu tính chính xác cao. Để cấu hình chế độ này, bạn cần thiết lập:
processing.guarantee=exactly.once.

Tóm Tắt Các Phương Thức Đọc Message

  • At Most Once Delivery: offsets sẽ được commit ngay khi message được nhận, các lỗi xử lý có thể dẫn đến mất message.
  • At Least Once Delivery: offsets sẽ được commit sau khi message được xử lý xong. Nếu có vấn đề, bạn có thể đọc lại message, tuy nhiên, có thể xuất hiện tình trạng duplicate. Sử dụng idempotent-key để xử lý.
  • Exactly Once Delivery: Đây là lựa chọn tốt cho các ứng dụng giao dịch hoặc khi sử dụng Kafka Streams API.

Kết Luận

Đối với hầu hết các ứng dụng, quy trình xử lý 'Ít Nhất Một Lần' là sự lựa chọn tốt nhất. Hãy đảm bảo rằng các phép biến đổi và xử lý của bạn được thực hiện một cách an toàn để tối ưu hóa trải nghiệm người dùng và hiệu suất hệ thống.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào