Technologieaustausch

Kafka-Produzent

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Hersteller

Die Produzenten sind dafür verantwortlich, Nachrichten zu erstellen und sie dann an Kafka zu übermitteln.
Fügen Sie hier eine Bildbeschreibung ein

Lastverteilung

  1. Umfragestrategie.
  2. Zufällige Strategie.
  3. Hash nach Schlüssel.

Kafkas Standardpartitionierungsstrategie: Wenn der Schlüssel angegeben ist, werden Nachrichten mit demselben Schlüssel an dieselbe Partition gesendet (Partitionen werden geordnet); wenn der Schlüssel nicht angegeben ist, wird die Abfragestrategie verwendet.

Eine Nachricht schicken

acks gibt an, wie viele Partitionsrepliken der Produzent benötigt, um die Nachricht zu empfangen, bevor er davon ausgeht, dass die Nachricht erfolgreich geschrieben wurde.

Es gibt keine Vor- oder Nachteile zwischen den drei Methoden, sondern Sie müssen die geeignete Strategie entsprechend den örtlichen Gegebenheiten auswählen. Es gibt einen Kompromiss zwischen Leistung und Zuverlässigkeit.

Es gibt drei Möglichkeiten, Nachrichten zu senden:

Senden und vergessen.

acks = 0.
Der Produzent wartet nach dem Senden der Nachricht nicht auf eine Antwort des Brokers. In den meisten Fällen können Nachrichten erfolgreich zugestellt werden, da Kafka hochverfügbar ist und der Produzent über einen Mechanismus verfügt, der automatisch versucht, erneut zu senden. Wenn jedoch ein nicht wiederholbarer Fehler oder eine Zeitüberschreitung auftritt, geht die Nachricht verloren und die Anwendung erhält keine Informationen oder Ausnahmen.
In derselben Konfigurationsumgebung kann der maximale Durchsatz erreicht werden, indem Acks auf 0 gesetzt wird.

Asynchron senden

acks=1, Standardwert.
Nachdem der Produzent die Nachricht gesendet hat, erhält er eine erfolgreiche Antwort vom Server, sofern die Führungskopie der Partition die Nachricht erfolgreich schreibt.

  • Wenn die Nachricht nicht in die Führungskopie geschrieben werden kann, beispielsweise wenn die Führungskopie abstürzt und eine neue Führungskopie erneut gewählt wird, erhält der Produzent eine Fehlerantwort. Um einen Nachrichtenverlust zu vermeiden, kann der Produzent die Nachricht erneut senden Nachricht.
  • Wenn eine Nachricht in die Leader-Kopie geschrieben wird und eine erfolgreiche Antwort an den Produzenten zurückgegeben wird und die Leader-Kopie abstürzt, bevor sie von anderen Follower-Kopien abgerufen wird, geht die Nachricht zu diesem Zeitpunkt immer noch verloren, da die entsprechende Nachricht nicht in der Kopie vorhanden ist Kopie des neu gewählten Führers.
    acks ist auf 1 gesetzt, was einen Kompromiss zwischen Nachrichtenzuverlässigkeit und Durchsatz darstellt.
Synchron senden

acks = -1 oder acks = all.
Nachdem der Produzent die Nachricht gesendet hat, muss er warten, bis alle Replikate im ISR die Nachricht erfolgreich geschrieben haben, bevor er eine erfolgreiche Antwort vom Server empfangen kann.
In derselben Konfigurationsumgebung kann die höchste Zuverlässigkeit erreicht werden, wenn Acks auf -1 (alle) gesetzt wird. Dies bedeutet jedoch nicht, dass die Nachricht zuverlässig sein muss, da im ISR möglicherweise nur eine Leader-Kopie vorhanden ist, was zur Situation von acks = 1 führt.