Sobes.tech
Junior — Middle

Welcher Mechanismus zur Garantierung der Nachrichtenlieferung wurde in Kafka bei Ihrer vorherigen Arbeit verwendet?

sobes.tech KI

Antwort von AI

In Kafka werden Liefergarantien für Nachrichten durch die Konfiguration der Producer- und Consumer-Parameter sowie durch das Bestätigungsmechanismus (acks) und die Offset-Verwaltung sichergestellt.

Hauptmechanismen:

  • acks — Producer-Parameter, der bestimmt, wie viele Replikate die Nachricht bestätigen müssen. Werte:

    • 0 — keine Bestätigung abwarten (geringe Zuverlässigkeit)
    • 1 — Bestätigung vom Leader abwarten
    • all (oder -1) — Bestätigung von allen ISR (in-sync replicas), was maximale Zuverlässigkeit gewährleistet
  • Wiederholungen und Idempotenz — Der Producer kann bei Fehlern die Nachrichten erneut senden, und die Idempotenz verhindert Duplikate.

  • Offset Commit — Der Consumer committet nach der Verarbeitung der Nachrichten die Offsets, um sicherzustellen, dass Nachrichten nicht erneut verarbeitet werden.

In der Praxis verwendet man für "mindestens einmal" die Einstellung acks=all und einen idempotenten Producer, während für "genau einmal" zusätzliche Einstellungen und Anwendungslogik erforderlich sind.

Beispiel für die Producer-Konfiguration in Go (mit sarama):

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)

Das Garantiesystem für die Lieferung ist eine Kombination aus Bestätigungen, Replikation und Offset-Verwaltung.