- Ja, es macht durchaus Sinn, für ein Thema mehr als eine Partition zu haben, selbst wenn Sie einen einzelnen Kafka-Broker haben. Ein Szenario, wenn Sie davon profitieren können, ist ziemlich einfach:
- Sie durch Mieter id in-Auftragsabwicklung zu gewährleisten, müssen
- Verarbeitungslogik für jede Nachricht ist ziemlich komplex und dauert einige Zeit. Vor allem der Fall, wenn die Kafka-Nachricht selbst ist einfach, aber die Logik hinter der Verarbeitung dieser Nachricht braucht Zeit (einfaches Beispiel - Nachricht ist eine URL, und die Verarbeitungslogik lädt die Datei von dort und einige Verarbeitung)
Angesichts dieser zwei Bedingungen können Sie in eine Situation kommen, in der ein Verbraucher nicht in der Lage ist, alle Nachrichten weiter zu verarbeiten, wenn alle Daten auf eine einzige Partition gehen. Denken Sie daran, dass Sie eine Partition mit genau einem Consumer bearbeiten können (Sie können also zwei Consumer verwenden, wenn Sie unterschiedliche Consumer-Gruppen verwenden, aber das ist nicht Ihr Fall), so dass Sie mit der Zeit hinterherhinken. Wenn Sie jedoch mehr als eine Partition haben, können Sie entweder einen Verbraucher verwenden und Daten parallel verarbeiten (dies könnte in manchen Fällen helfen, die Vorgänge zu beschleunigen) oder einfach weitere Verbraucher hinzufügen.
Standardmäßig verwendet Kafka Hash-basierte Partitionierung. Dies ist konfigurierbar durch ein benutzerdefiniertes Partitionierungsprogramm bietet, zum Beispiel können Sie zufällige Partitionierung verwenden, wenn Sie nicht egal, was Ihre Botschaft.
Es ist völlig bis zu Ihnen welche Zwecken Sie Themen haben für
endet partitionieren
UPD, Antworten auf Fragen im Kommentar:
mehr Verbraucher Hinzufügen der Regel wird für das Hinzufügen von mehr Rechenleistung getan, nicht für die gewünschte Parallelität zu erzielen. Um eine Parallelität hinzuzufügen, fügen Sie Partitionen hinzu. Die meisten Consumer-Implementierungen verarbeiten unterschiedliche Partitionen auf verschiedenen Threads. Wenn Sie also über genügend Rechenleistung verfügen, können Sie möglicherweise nur einen einzelnen Benutzer mehrere Partitionen parallel verarbeiten lassen. Wenn Sie dann in Situationen stoßen, in denen ein Verbraucher nicht genug ist, fügen Sie einfach mehr Verbraucher hinzu.
Wenn Sie ein Thema erstellen Sie die Anzahl der Partitionen angeben, nur (und Replikationsfaktor für dieses Thema, aber das ist eine andere Sache). Der Schlüssel und die Partition, die gesendet werden, sind vollständig dem Produzenten überlassen. In der Tat können Sie Ihren Producer so konfigurieren, dass er einen zufälligen Partitionierer verwendet und es wird sich nicht einmal um Schlüssel kümmern, wählen Sie einfach die Partition zufällig aus. Es gibt keine direkte Beziehung zwischen Schlüssel -> Partition, es ist einfach praktisch, davon zu profitieren, dass Dinge so eingerichtet werden.
Können Sie auf diese näher erläutern? Ich bin mir nicht sicher, ob ich das verstehe, aber ich schätze deine Frage ist, ob du nur einen Wert senden kannst und Kafka wird irgendwie auf einen Schlüssel schließen. Wenn ja, dann ist die Antwort nein - Kafka gelten keine Transformation von Nachrichten und speichert sie wie es ist, also, wenn Sie Ihre Nachricht einen Schlüssel enthalten soll, muss der Hersteller ausdrücklich den Schlüssel senden.
Zunächst einmal vielen Dank für die ausführliche Antwort. Noch einige Fragen zur Klärung: 1. In der Probe, die Sie in Ihrer ersten Antwort gegeben haben. Wenn ich viele Partitionen für Parallelitätszwecke habe, habe ich also viele Verbraucher in derselben Gruppe, die von diesen Partitionen liest? ist das, was du meinst oder der gleiche Verbraucher kann multi-threaded sein und somit mehr lesen? 2. Wenn ich ein Thema erstelle, konfiguriere ich es sowohl mit der Partitionsnummer als auch mit dem Schlüssel? oder der Schlüssel liegt beim Produzenten zu senden? 3. Kann die Nachricht selbst den Schlüssel enthalten und kafka weiß, dass sie aus dem JSON extrahiert werden soll? – Pinidbest
Ich habe gerade aktualisiert meine Antwort – serejja
Hallo paar Fragen: 1. Wie sagt man dem Produzenten, dass er einen zufälligen Schlüssel hat, der zu einer der Partitionen passt? 2. Wenn Sie die Anzahl der Partitionen in einem bestehenden Thema erhöhen möchten, ist dies möglich? – Pinidbest