2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Die Produzenten sind dafür verantwortlich, Nachrichten zu erstellen und sie dann an Kafka zu übermitteln.
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.
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:
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.
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.
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.