Wie entscheidet man Kafka Clustergröße?

10

Ich plane zu entscheiden, wie viele Knoten in Kafka Cluster vorhanden sein sollen. Ich bin mir nicht sicher über die zu berücksichtigenden Parameter. Ich bin sicher, es muss & gt; = 3 sein (mit einem Replikationsfaktor von 2 und einer Fehlertoleranz von 1 Knoten).

Kann mir jemand sagen, welche Parameter bei der Entscheidung über die Clustergröße und deren Auswirkung auf die Größe berücksichtigt werden sollten.

Ich kenne folgende Faktoren, weiß aber nicht, wie es die Clustergröße quantitativ beeinflusst. Ich weiß, wie es die Clustergröße qualitativ beeinflusst. Gibt es einen anderen Parameter, der die Clustergröße beeinflusst? 1. Replication factor (cluster size >= replication factor) 2. Node failure tolerance. (cluster size >= node-failure + 1)

Was sollte die Clustergröße für das folgende Szenario sein, während alle Parameter berücksichtigt werden? 1. There are 3 topics. 2. Each topic has messages of different size. Message size range is 10 to 500kb. Average message size being 50kb. 3. Each topic has different partitions. Partitions are 10, 100, 500 4. Retention period is 7 days 5. There are 100 million messages which gets posted every day for each topic.

Kann mir jemand bitte auf die relevante Dokumentation oder andere Blogger verweisen, die das besprechen? Ich habe es google durchsucht, aber ohne Erfolg

    
puneet 13.01.2015, 13:05
quelle

2 Antworten

12

Wie ich verstehe, hängt der gute Durchsatz von Kafka nicht nur von der Clustergröße ab; Es gibt andere Konfigurationen, die ebenfalls berücksichtigt werden müssen. Ich werde versuchen, so viel wie möglich zu teilen.

Kafkas Durchsatz soll linear skalal mit der Anzahl der Festplatten sein, die Sie haben. Die neue Funktion für mehrfache Datenverzeichnisse, die in Kafka 0.8 eingeführt wurde, ermöglicht Kafkas Themen unterschiedliche Partitionen auf verschiedenen Rechnern. Wenn die Partitionsnummer stark ansteigt, steigen auch die Chancen, dass der Wahlprozess für die Anführer langsamer wird, was auch die Neugewichtung der Kunden beeinflusst. Dies ist etwas zu beachten und könnte ein Engpass sein.

Eine andere wichtige Sache könnte die Plattenspülrate sein. Da Kafka immer sofort alle Daten in das Dateisystem schreibt, werden die Daten umso häufiger auf die Festplatte geschrieben, je "suchgebundener" Kafka ist und je niedriger der Durchsatz ist. Wiederum kann eine sehr niedrige Spülrate zu unterschiedlichen Problemen führen, da in diesem Fall die Menge der zu spülenden Daten groß ist. Daher ist es nicht sehr praktisch, eine genaue Zahl anzugeben, und ich denke, das ist der Grund, warum Sie in der Kafka-Dokumentation keine solche direkte Antwort finden konnten.

Es wird auch andere Faktoren geben. Zum Beispiel die fetch -Größe des Verbrauchers, die Komprimierungen, die Stapelgröße für asynchrone Erzeuger, Socket-Puffergrößen usw.

Hardware & amp; Das Betriebssystem wird auch eine Schlüsselrolle dabei spielen, da die Verwendung von Kafka in einer Linux-basierten Umgebung aufgrund seines pageCache-Mechanismus zum Schreiben von Daten auf den Datenträger ratsam ist. Lesen Sie mehr dazu hier hier

Sie können auch einen Blick auf werfen, wie das Flush-Verhalten von Betriebssystemen eine Schlüsselrolle spielt Passen Sie es tatsächlich an Ihre Bedürfnisse an. Ich glaube, es ist der Schlüssel, um die Designphilosophie zu verstehen, die sie in Bezug auf Durchsatz und Fehlertoleranz so effektiv macht.

Etwas mehr Ressource, die ich nützlich finde, um in zu graben Ссылка
Ссылка
Zypern
Ссылка

    
user2720864 14.01.2015, 13:27
quelle
2

Ich hatte kürzlich mit Kafka gearbeitet und das sind meine Beobachtungen.

Jedes Thema ist in Partitionen unterteilt und alle Partitionen eines Themas sind auf Kafka-Broker verteilt. Vor allem helfen diese, Themen zu speichern, deren Größe größer ist als die Kapazität eines einzelnen Kafka-Brokers, und sie erhöhen auch die Verbraucherparallelität.

Um die Zuverlässigkeit und Fehlertoleranz zu erhöhen, werden Replikationen der Partitionen vorgenommen, und sie erhöhen nicht die Verbraucherparallelität. Die Daumenregel ist ein einzelner Broker, der nur ein einzelnes Replikat pro Partition hosten kann . Daher muss Anzahl der Broker & gt; = Anzahl der Replikate

sein

Alle Partitionen sind auf alle verfügbaren Broker verteilt, die Anzahl der Partitionen kann unabhängig von der Anzahl der Broker sein, aber die Anzahl der Partitionen muss der Anzahl der Consumer-Threads in einer Consumer-Gruppe entsprechen (um den besten Durchsatz zu erhalten)

Die Cluster-Größe sollte unter Berücksichtigung des Durchsatzes festgelegt werden, den Sie beim Verbraucher erreichen möchten.

    
nithin 13.01.2015 13:25
quelle

Tags und Links