2017-12-05 2 views
0

Ich führe zwei Kafka-Streams-Anwendungen einzeln aus, jede in einer anderen JVM-Instanz und sie funktionieren gut. Sobald ich die Anwendungen in der gleichen JVM-Instanz ausgeführt habe, funktioniert die zweite Anwendung nicht (sie verbraucht weder Daten noch produziert sie). Gibt es Einschränkungen beim Ausführen von zwei separaten Apps in derselben JVM-Instanz? Passiert das auch für Kafka-Konsumenten?KafkaStreams-Anwendungen

Antwort

0

Es sollte funktionieren, mehrere KafkaStreams Instanzen in die gleiche JVM zu setzen. Es kann jedoch einfacher sein, die Anzahl der Threads innerhalb einer Instanz zu erhöhen.

Hinweis: Die Anzahl der Threads über alle Instanzen, die Sie verwenden können, ist durch die Anzahl der Eingabepartitionen Ihrer Eingabethemen begrenzt (das ist nicht ganz exakt, aber eine gute Faustregel). Haben Sie genügend Partitionen in Ihrem Eingabethema? Sehen Sie, dass einige Partitionen keiner Instanz zugewiesen sind und nicht verarbeitet?

Beachten Sie auch, dass Kafka Stream pro Thread parallelisiert - das heißt, wenn Sie 2 Instanzen mit je 2 Threads und nur 2 Themenpartitionen haben, kann es passieren, dass beide Partitionen den beiden Threads einer Instanz zugeordnet werden Die beiden Threads der anderen Instanz sind inaktiv. Während der Laufzeit "sehen" wir nur Thread und wissen nicht, ob sie innerhalb derselben oder verschiedener KafkaStreams Instanzen laufen.