2016-07-04 6 views
3

Я использую потоки Кафки для выполнения параллельных работ по теме Кафки.Распределение работы с потоками Кафки

Поток имеет следующий вид

stream(topic) 
.map(somefunction) 
.through(secondtopic) 

Я установить KStreams иметь 15 рабочих потоков, но кажется, что работа не сбалансированы между потоками правильно (или вообще не). Может быть, что-то не так с моей настройкой? Я ожидал, что работа будет равномерно распределена между рабочими потоками, но похоже, что это не так.

snapshot from jvisualvm

+0

Сколько разделов доступны в вашей теме? –

+0

ссылка на jvisualvm отсутствует. –

ответ

8

Вы можете иметь только столько потоков, сколько есть вход Кафка темы разделов.

Сообщения в одном разделе обрабатываются одним потоком, чтобы обеспечить общий порядок доставки сообщений.

Фактически, в разделе разделов раздела KafkaStreams разделение поровну равномерно распределено между задачами, а не сообщениями.

Таким образом, работа хорошо сбалансирована между потоками, только если сообщения хорошо сбалансированы между разделами.

Чтобы получить более подробную информацию о потоковой модели взглянуть на Confluent documentation

+0

«Итак, работа хорошо сбалансирована между потоками, только если сообщения хорошо сбалансированы между разделами». здесь суть. –

+0

благодарит за разъяснение! – dmead

+0

@dmead, вы должны принять этот ответ, если вы довольны этим. –

 Смежные вопросы

  • Нет связанных вопросов^_^