2015-01-07 25 views
7

Ich würde gerne wissen, was ist der Unterschied zwischen einfachen Thema & Partition topic.As nach meinem Verständnis die Last zu balancieren, Thema wurde partitioniert, Jede Nachricht wird Offset & Verbraucher wird bestätigen, um vorherige zu gewährleisten Nachrichten wurden verbraucht.In dem Fall, dass keine der Partition & Verbraucher nicht die Re-Balance von Kafka getan verwaltet, verwaltet es effizient.Kafka Thema vs Partition Thema

Wenn mehrere Zweige statt Partition erstellt werden, wirkt sich dies auf die Betriebseffizienz aus.

Antwort

16

Aus den kafka documentation

die Partitionen im Protokoll dienen mehreren Zwecken. Erstens ermöglichen sie eine Skalierung des Protokolls über eine Größe hinaus, die auf einen einzelnen Server passt. Jede einzelne Partition muss auf den Servern passen, die sie hosten, sondern ein Thema viele Partitionen haben kann, so dass es eine beliebige Menge an Daten verarbeiten kann

mehrere Partitionen für ein bestimmtes Thema zu haben Kafka es über den Kafka-Cluster zu verteilen erlaubt . Als Ergebnis kann die Anforderung zum Behandeln von Daten von verschiedenen Partitionen auf mehrere Server im gesamten Cluster aufgeteilt werden. Außerdem kann jede Partition über mehrere Server hinweg repliziert werden, um den Datenverlust zu minimieren. Erneut von der Dok.-Seite

Die Partitionen des Protokolls werden über die Server im Kafka-Cluster verteilt, wobei jeder Server Daten und Anforderungen für eine Freigabe der Partitionen verarbeitet. Jede Partition wird über eine konfigurierbare Anzahl von Servern für die Fehlertoleranz repliziert.

Wenn Sie also ein Thema mit einer einzelnen Partition haben, können Sie diese Flexibilitäten nicht verwenden. Beachten Sie auch, dass Sie in einer realen Umgebung verschiedene Themen haben können, um verschiedene Kategorien von Nachrichten zu halten (obwohl es auch möglich ist, ein einzelnes Thema mit mehreren Partitionen zu haben, wobei jede Partition bestimmte Kategorien von Nachrichten mit dem Messgae-Schlüssel während der Produktion haben kann).

Ich glaube nicht, dass das Erstellen mehrerer Themen anstelle von Partitionen viel Einfluss auf die Gesamtleistung haben wird. Aber stellen Sie sich vor, Sie möchten alle Tweets der Nutzer auf Ihrer Website im Auge behalten. Sie können dann ein Thema namens "User_tweet" mit mehreren Teilen haben, so dass Kafka während der Erstellung von Nachrichten die Daten über mehrere Partitionen verteilen kann und auf der Konsumentenseite nur eine Gruppe von Konsumenten Daten aus demselben Thema ziehen muss. Wenn Sie stattdessen "User_tweet_1", "User_tweet_2", "User_tweet_3" beibehalten, werden die Dinge nur für Sie komplex, während Sie die Nachrichten produzieren und konsumieren.

Verwandte Themen