2017-01-04 3 views
0

Kann ich Themen mit dem Namen update_i für verschiedene Arten von Updates erstellen und sie unter Verwendung von user_id in einem Kafka MQ partitionieren? Ich habe diesen Beitrag von confluent.io: https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/. Außerdem weiß ich, dass ich kein Thema mit dynamischer Anzahl von Partitionen erstellen kann. Diese zwei Tatsachen (die Post und die statische Anzahl der Kafka-Partitionen). Was ist die Zustellmechanismus-Alternative?Kafka als Lieferungsmechanismus im Newsfeed verwendet

+0

Warum möchten Sie nach Benutzer-ID partitionieren? Möchten Sie nur Nachrichten von bestimmten Benutzern und nicht von anderen "abonnieren" oder verarbeiten? Oder denken Sie daran, dass user_id die Ziel-Benutzer-ID ist? –

Antwort

0

Als eine mögliche Lösung würde ich vorschlagen, eine Reihe von Partitionen zu erstellen, und dann Setup Hersteller Partition wählen Sie die folgende Regel mit

user_id mod <number_of_partitions> 

Dass Sie Reihenfolge der Nachrichten für bestimmte User_id halten können.

Wenn Sie einen Consumer benötigen, der nur Nachrichten für bestimmte user_id verarbeitet, können Sie einen (Low-Level-) Consumer schreiben, der eine bestimmte Partition liest und nur Nachrichten verarbeitet, die für einen bestimmten Kunden gesendet und ignoriert werden alle anderen Nachrichten.

1

Kann ich erstellen Themen genannt update_i für verschiedene Arten von Updates und partitionieren sie in einem Kafka MQ mit User_id?

Wenn ich Sie richtig verstehe, ist die Antwort ja.

Was würden Sie in aller Kürze tun müssen:

  • Topic Konfiguration: Bestimmen Sie die erforderliche Anzahl von Partitionen für Ihr Thema (en). Üblicherweise wird die Anzahl der Partitionen basierend auf (1) erwarteter Skalierung/Volumen der eingehenden Daten, dh der Schreibseite der Skalierung, und/oder (2) der erforderlichen Parallelität beim Konsum der Nachrichten zur Verarbeitung, dh der Lese- Seite der Skalierung. Einzelheiten finden Sie unter https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka-cluster/.

  • Schreiben von Nachrichten zu diesen Kafka-Themen (aka die Seite des "Kafka-Produzenten"): In Kafka sind Nachrichten Schlüssel-Wert-Paare. In Ihrem Fall würden Sie den Nachrichtenschlüssel als user_id festlegen. Wenn dann Kafkas Standard "Partitionierung" verwendet wird, werden Nachrichten für denselben Nachrichtenschlüssel (hier: user_id) automatisch an dieselbe Partition gesendet - was Sie erreichen wollen.

Verwandte Themen