Стратегия разделения в потоке Kafka

#apache-kafka-streams

#apache-kafka-streams

Вопрос:

Какую стратегию разделения использует Kafka stream? Можем ли мы изменить стратегию разделения в потоке Kafka, как мы можем изменить в обычном Kafka Consumer

 streamsConfiguration.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG,Collections.singletonList(StickyAssignor.class));
  

не имеет значения, и всегда используется StreamsPartitionAssignor

Комментарии:

1. Почему вы хотите это сделать?

Ответ №1:

Нет. Вы не можете установить назначителя раздела.

Kafka Streams предъявляет очень специфические требования к тому, как работает назначение разделов, и если все сделано неправильно, может быть вычислен неверный результат. Таким образом, не разрешается устанавливать назначителя пользовательских разделов.

Комментарии:

1. Как я объяснил в jira issues.apache.org/jira/browse/KAFKA-8207 , если узел 1, который обрабатывает разделы 1,2,3, выходит из строя, другие узлы вступают во владение из-за num.standby.replicas>1. Как только узел 1 вернется снова, потребуется время, чтобы создать данные хранилища состояний для новых разделов в производственных процессах, поскольку у нас большой объем локального хранилища состояний

2. Возможно. В общем, если узел 1 возвращается, он должен иметь уже частичное состояние, и, следовательно, восстановление должно быть быстрым. В любом случае, в этом случае предпочтение отдается балансировке нагрузки, а не липкости. Однако мы знаем об этих проблемах, и есть WIP, чтобы исправить это. Сравнить cwiki.apache.org/confluence/display/KAFKA /…