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
Antwort
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.
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.
- 1. Kann etcd als Nachrichtenbus wie Kafka mit Einzelproduzent verwendet werden?
- 2. Wie ermittelt man, welche Serialisierung im Kafka-Producer verwendet wird?
- 3. Facebook-Newsfeed, kippt Server finden
- 4. Facebook API Newsfeed Android
- 5. Wie Facebook wie Newsfeed?
- 6. Kafka im verteilten System
- 7. Facebook API offline Newsfeed Zugriff
- 8. FbConnect: Veröffentlichen Sie gleichzeitig auf der Benutzerwand und im Newsfeed?
- 9. kafka NoClassDefFoundError kafka/Kafka
- 10. REST Endpunkt als Kafka Waschbecken
- 11. Flink mit Kafka als Quelle
- 12. Twitter wie Newsfeed mit Firebase
- 13. Installieren Sie Kafka als Windows-Dienst
- 14. Kafka-Knoten im Knoten fetchMaxBytes Parameter
- 15. kafka als Ereignisspeicher in ereignisbasiertem System
- 16. Verwenden Sie kafka producer als Log Appender
- 17. Wie Logstash ist anders als Kafka
- 18. Heroku CLI nicht erkennt kafka als Befehl
- 19. Apps direkt in einem Facebook Newsfeed spielbar
- 20. Acknowledgement.acknowledge() werfen Ausnahme im Frühjahr-kafka @KafkaListener
- 21. Wie löst RecordTooLargeException im Kafka Producer auf?
- 22. Frühling Kafka-Integration für Kafka 0.9
- 23. GUI-Eingänge als Variablen im Skript verwendet - Python
- 24. Kann Metatyp (.Type) als Schlüssel im Wörterbuch verwendet werden?
- 25. Kafka Storm Integration mit Kafka Spout
- 26. Kafka connect oder Kafka Client
- 27. Wie kafka Produzent Thema mit mehr als einer Partition mit Spring Integration kafka konfigurieren
- 28. Wiederherstellen Zustand Konsistenz in Flink, wenn Kafka als EventStor
- 29. Erstellen eines SOLR-Index für Activity Stream oder Newsfeed
- 30. Kann keine Nachricht an Kafka von Dienst im Docker
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? –