Publié le

Kafka peut-il perdre des messages ?

Auteurs

"La gestion des erreurs est l'un des aspects les plus importants de la création de systèmes fiables.

Aujourd'hui, nous aborderons un sujet important : Kafka peut-il perdre des messages ?

Une croyance commune parmi de nombreux développeurs est que Kafka, de par sa conception même, garantit l'absence de perte de message. Cependant, comprendre les nuances de l'architecture et de la configuration de Kafka est essentiel pour vraiment comprendre comment et quand il peut perdre des messages et, plus important encore, comment éviter de tels scénarios.

Le diagramme ci-dessous montre comment un message peut être perdu au cours de son cycle de vie dans Kafka.

🔹 Producteur Lorsque nous appelons producteur.send() pour envoyer un message, celui-ci n'est pas envoyé directement au courtier. Deux threads et une file d'attente sont impliqués dans le processus d'envoi de messages :

  1. Fil de candidature
  2. Accumulateur de disques
  3. Thread expéditeur (thread E/S)

Nous devons configurer les « accusés de réception » et les « nouvelles tentatives » appropriés pour que le producteur puisse s'assurer que les messages sont envoyés au courtier.

🔹 Courtier Un cluster de courtiers ne doit pas perdre de messages lorsqu'il fonctionne normalement. Cependant, nous devons comprendre quelles situations extrêmes pourraient entraîner une perte de message :

  1. Les messages sont généralement vidés sur le disque de manière asynchrone pour un débit d'E/S plus élevé. Ainsi, si l'instance est arrêtée avant le vidage, les messages sont perdus.

  2. Les réplicas du cluster Kafka doivent être correctement configurés pour contenir une copie valide des données. Le déterminisme dans la synchronisation des données est important.

🔹 Consommateur Kafka propose différentes manières de valider des messages. La validation automatique peut accuser réception du traitement des enregistrements avant qu'ils ne soient réellement traités. Lorsque le consommateur est en cours de traitement, certains enregistrements peuvent ne jamais être traités.

Une bonne pratique consiste à combiner les validations synchrones et asynchrones, où nous utilisons des validations asynchrones dans la boucle de traitement pour un débit plus élevé et des validations synchrones dans la gestion des exceptions pour nous assurer que le dernier décalage est toujours validé."

Veuillez noter que la version française est assistée par Ai, des erreurs mineures peuvent donc exister. Kafka peut-il perdre des messages ?

Auteur

Ai Base Network (ABN), ABN ASIA a été fondée par des personnes ayant des racines profondes dans le milieu académique, avec une expérience professionnelle aux États-Unis, aux Pays-Bas, en Hongrie, au Japon, en Corée du Sud, à Singapour et au Vietnam. ABN ASIA est l'endroit où l'académie et la technologie rencontrent l'opportunité. Avec nos solutions de pointe et nos services de développement logiciel compétents, nous aidons les entreprises à se développer et à s'imposer sur la scène mondiale. Notre engagement : Plus vite. Mieux. Plus fiable. Dans la plupart des cas : moins cher également.

N'hésitez pas à nous contacter chaque fois que vous avez besoin de services informatiques, de conseils en matière de numérique, de solutions logicielles prêtes à l'emploi, ou si vous souhaitez nous envoyer des demandes de propositions (RFP). Vous pouvez nous contacter à l'adresse [email protected]. Nous sommes prêts à vous aider avec tous vos besoins technologiques.

ABNAsia.org

© ABN ASIA