2017-10-26 1 views
0

Durch das Beibehalten von batch.size small wird der Aufwand für das Senden von Nachrichten am Producer erhöht und gleichzeitig der Durchsatz reduziert und große Speicherverluste vermieden. Gibt es eine Lösung, bei der diese Größe je nach Auslastung dynamisch sein kann?Wie kann ich Batch-Größe in Kafka-Produzenten dynamisch machen?

+1

https://issues.apache.org/jira/browse/KAFKA-1026 –

+0

Wie prognostizieren Sie die eingehende Last? Die eingehende Last der letzten 1 Minute stimmt möglicherweise nicht mit der nächsten/zukünftigen Minute überein. –

Antwort

0

Nur wenn Sie den vorherigen Hersteller stoppen und einen neuen starten. Ein Producer-Objekt benötigt alle Eigenschaften, bevor eine Nachricht gesendet wird. Sie können seine Eigenschaften nicht in der Mitte des Jobs ändern.

+0

Also, was ist die beste Vorgehensweise zum Einrichten dieser Eigenschaft? –

+0

Es gibt 2 Perspektiven auf dieses Problem zu schauen: Latenz und Durchsatz. Sie können nicht beide gleichzeitig haben. Sie können linger.ms verwenden, wenn Sie den maximalen Durchsatz erreichen möchten und wenn Sie maximale Latenz wünschen, legen Sie linger.ms = 0 fest. – subzero

0

Sie können linger.ms kombiniert mit batch.size Eigenschaft verwenden. Wenn Sie batch.size als 5242880 (5 MB) und linger.ms auf 10 ms eingestellt haben. Dann wartet der Produzent, bis die Chargengröße gefüllt ist/die Verweilzeit erreicht ist.

Weitere Informationen über die linger.ms Eigenschaft in der offiziellen Dokumentation.

Verwandte Themen