Angenommen, ich habe ein Thema mit 6 Partitionen und 2 Verbraucher wo P1, P2, P3 von C1 verarbeitet und P4, P5, P6 von C2 verarbeitet. Nehmen wir an, Benutzerdaten U1 gehen immer zu P1, U2 zu P2 und so weiter.Kafka: Unterstützt Kafka den Statusübergang auf Anwendungsebene?
So
C1 maintains state of users U1, U2, U3
C2 maintains state of users U4, U5, U6.
Nun lassen Sie uns sagen, dass wir einen weiteren Verbraucher C3 hinzufügen, so geschieht Rebalancing und jetzt
P1, P2, P3 -> C1
P4, P5 -> C2
P6 -> C3
Also mein Antrag wurde Benutzer U6 Zustand in C2 beibehalten, aber jetzt U6 Daten fließt nach C3
Jetzt hier irgendwie U6 Zustand von C2 sollte nach C3 fließen. So wie dies in Kafka erreicht ist, zu wissen, dass sein sehr häufiges Problem
ODER
Wenn Kafka keine Unterstützung bieten, dann, wie dieses Problem im Allgemeinen gelöst ... Gibt es ein Design-Muster für die Lösung?
Danke! Scheint so, als ob du mich fragst, wie "Offsets" in Kafka durch das Thema __consumer_offsets begangen werden? –
Ähnliche Lösung, ja. Ich mache es mit allem. Ein anderer Ansatz besteht darin, den Zustand nicht zu stören. Kafka ist optimiert für das Lesen langer Nachrichten. Lassen Sie den (neuen) Verbraucher seinen eigenen Zustand aufbauen, indem Sie ihn von Anfang an lesen. Sorgen Sie dafür, dass Sie das später optimieren. –
Eine andere Option wäre die Verwendung von 'Zookeeper', was Kafka vor' __consumer_offsets' verwendet hat. Ich habe vor einiger Zeit eine diesbezügliche Frage gestellt, die für Sie interessant sein könnte: http://stackoverflow.com/questions/35869786/kafka-instead-of-ozookeeper-for-cluster-management –