2017-08-02 6 views
0

Ich habe einen Kafka Cluster mit zwei Knoten und sechs Partitionen mit einem Replikationsfaktor von 2 auf AWS konfiguriert. Jeder Kafka-Knoten läuft auf einer m4.2xlarge EC2-Instanz, die von einem EBS unterstützt wird.Einschränkungen für Kafka Producer und Broker Throughput

Ich verstehe, dass die Geschwindigkeit des Datenflusses vom Kafka-Produzent zum Kafka-Broker durch die Netzwerkbandbreite des Herstellers begrenzt ist.

Nehmen wir an, die Netzwerkbandbreite zwischen Kafka Producer und Broker beträgt 1 Gbps (ca. 125 MB/s) und die Bandbreite zwischen Kafka Broker und Storage (zwischen EC2 Instanz und EBS Volume) beträgt 1 Gbps.

Ich habe das Tool org.apache.kafka.tools.ProducerPerformance zum Profiling der Leistung verwendet.

beobachtete ich, dass ein einzelner Produzent 90 bei etwa MB/s an den Broker schreiben kann, wenn eine Nachrichtengröße von 100 Byte.

(daher ist Netzwerk nicht gesättigt) Volumen

ich auch beobachtet, dass die Plattenschreibrate EBS ist ungefähr 120 MB/s.

Sind dies 90 MB/s aufgrund eines Netzwerkengpasses oder ist es eine Einschränkung von Kafka? (Vergessen Sie die Batch-Größe und Komprimierung usw. zur Vereinfachung)

Könnte dies an der Bandbreitenbeschränkung zwischen Broker und ebs-Volume liegen?

Ich habe auch beobachtet, dass, wenn zwei Hersteller (von zwei separaten Maschinen) Daten produzieren, der Durchsatz eines Herstellers auf etwa 60 MB/s gesunken ist.

Was könnte der Grund dafür sein? Warum erreicht dieser Wert nicht 90 MB/s? Könnte das an dem Netzwerk-Engpass zwischen Broker und ebs Volume liegen?

Was mich verwirrt, ist, dass in beiden Fällen (Einzelproduzent und zwei Produzenten) die Plattenschreibrate auf ebs bei etwa 120 MB/s bleibt (näher an der oberen Grenze).

Danke

Antwort

0

Ich lief in das gleiche Problem wie pro meinem Verständnis, in ersten Fall ein Hersteller Daten an zwei Broker zu senden (es nichts anderes im Netz), so bekam man 90 MB/s und jeden Broker mit 45MB/s (ungefähr), aber im zweiten Fall senden zwei Produzenten Daten an zwei Broker, so dass sie aus Sicht der Hersteller Daten mit 60 MB/s senden können, aber aus Sicht des Brokers Daten mit 60 MB/s erhalten. s. Sie können also tatsächlich mehr Daten durch Kafka pushen.

0

Es gibt ein paar Dinge zu beachten:

  1. Es gibt separate Festplatte und Netzwerkgrenzen, die sowohl für die Instanz und das Volumen anzuwenden.
  2. Sie müssen Replikation berücksichtigen. Wenn Sie RF = 2 haben, beträgt der von einem einzelnen Knoten belegte Schreibverkehr 2 * (PRODUCER_TRAFFIC)/(PARTITION_COUNT) unter der Annahme einer gleichmäßigen Verteilung von Schreibvorgängen über Partitionen hinweg.