#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 /…