- vừa được xem lúc

[KAFKA] Các Loại Đọc Message Từ Kafka - Consumer Advanced

0 0 8

Người đăng: Open Dev

Theo Viblo Asia

trước khi

Các cách để đọc message từ consumer

  • khi xử lý 1 message từ kafka, cần phải lựa chọn thời điểm để commit offsets của nó, và các cách đọc message khác nhau sẽ ảnh hưởng đến các thiết kế và ứng dụng của bạn.

At Most Once Delivery

  • trong trường hợp này, khi thực hiện đọc message từ kafka thì message đó sẽ commit ngay lập tức.
  • nếu quá trình xử lý message xảy ra lỗi, thì không thể nào khôi phục được message đó -> mất message.
  • phù hợp cho những ứng dụng có thể cho phép data bị mất.

At Least Once Delivery (thường được xử dụng)

  • đọc message từ kafka ít nhất 1 lần,
  • việc đọc message được nhiều lần từ kafka sẽ dẫn đến trường hợp trùng message. khi 1 message gặp vấn đề trong lúc xử lý, chúng ta có thể đọc lại.
  • phù hợp cho những hệ thống không được mất message.
Idempotent Processing: Make sure your processing is idempotent (i.e. processing again the messages won’t impact your systems)

Exactly Once Delivery

  • một số ứng dụng ngoài việc đọc message ít nhất 1 lần( không mất dữ liệu ) mà còn yêu cầu là chính xác đúng 1 lần, 1 message là được xử lý đúng 1 lần.
  • điều này giúp cho kafka đáp ứng được 1 số vấn đề yêu cầu hệ thống xử lý đúng 1 lần như api payment
  • để config chỗ này chúng ta cần chỉnh: processing.guarantee=exactly.once

Summary

  • At most once: offsets sẽ được commit sau khi message được nhận, nếu xảy ra lỗi xử lý, message sẽ bị mất.
  • At least once: offsets sẽ được commit sau khi message được xử lý xong, nếu gặp vấn đề thì hoàn toàn có thể đọc lại message -> message nhiều lúc sẽ bị duplicated, sử dụng idempotent-key để xử lý.
  • Exactly Once Delivery: sẽ phù hợp với việc xử lý trong api transaction hoặc cơ chế kafka-streams api
Cuối Cùng:
Đối với hầu hết các ứng dụng, bạn nên sử dụng quy trình xử lý 'Ít nhất một lần' và đảm bảo các phép biến đổi/xử lý của bạn là bình thường.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Kafka là gì?

Apache Kafka® là một nền tảng stream dữ liệu phân tán. . stream data: dòng dữ liệu, hãy tưởng tượng dữ liệu là nước trong 1 con suối. .

0 0 43

- vừa được xem lúc

001: Message-driven programming với Message broker và Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Asynchronous programming.

0 0 165

- vừa được xem lúc

002: Apache Kafka topic, partition, offset và broker

Bài viết nằm trong series Apache Kafka từ zero đến one. Nói qua về lịch sử, Kafka được phát triển bởi LinkedIn (các anh em dev chắc chẳng xa lạ gì) và viết bằng ngôn ngữ JVM, cụ thể là Java và Scala.

0 0 153

- vừa được xem lúc

003: Gửi và nhận message trong Apache Kafka

Bài viết nằm trong series Apache Kafka từ zero đến one. . . Nếu muốn các message được lưu trên cùng một partition để đảm bảo thứ tự thì làm cách nào.

0 0 224

- vừa được xem lúc

004: Apache Kafka consumer offset, Broker discovery và Zookeeper

Bài viết nằm trong series Apache Kafka từ zero đến one. 1) Consumer offset.

0 0 130

- vừa được xem lúc

Apache Kafka - Producer - Gửi message đến Kafka bằng kafka-python

Overview. Understand how to produce message and send to the Kafka topic. Architecture. .

0 0 65