Как KStreams обрабатывает данные хранилища состояния при добавлении дополнительных разделов?

У меня есть один раздел данных с одним экземпляром приложения и одним локальным хранилищем состояний. Он работает какое-то время и имеет много данных с отслеживанием состояния. Мне нужно обновить это до 5 разделов с 5 экземплярами приложения. Что происходит с одним локальным хранилищем состояний, когда добавляются разделы и приложение возвращается в оперативный режим? Нужно ли удалять локальное хранилище состояний и начинать заново? Будет ли хранилище состояний автоматически перетасовываться между дополнительными хранилищами состояний экземпляров приложений в соответствии со стратегией секционирования?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
0
0
416
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нужно ли удалять локальное хранилище состояний и начинать заново?

Это рекомендуемый способ справиться с этим. (см. https://docs.confluent.io/platform/current/streams/developer-guide/app-reset-tool.html) На самом деле, если вы измените количество входных разделов темы и перезапустите вашего приложения, Kafka Stream завершится с ошибкой, потому что хранилище состояний имеет только один сегмент, в то время как ожидается 5 сегментов, учитывая, что теперь у вас будет 5 входных разделов темы.

Будет ли хранилище состояний автоматически перетасовываться между дополнительными хранилищами состояний экземпляров приложений в соответствии со стратегией секционирования?

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

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

Другие вопросы по теме

Похожие вопросы

Как использовать десериализацию protobuf в строках запроса KSQLDB?
Задержка начала потребления сообщений
Я пытаюсь построить коннектор снежинки для Кафки. Есть ли способ, которым коннектор обрабатывает такие события, как обновление, удаление и создание?
Приложение Kafka и Python в Kubernetes в отдельных модулях — NoBrokersAvailable()
Confluent Schema Registry — максимальное количество схем
NotEnoughReplicasException: сообщения отклоняются, так как синхронизированных реплик меньше, чем требуется
В указанном файле конфигурации JAAS не найден раздел конфигурации JAAS с именем «Клиент»
Разница между 3 приложениями setConcurrency(1) и 1 приложением setConcurrency(3)
Настройка Nifi для использования с Kafa в Kubernetes с использованием Helm в VirtualBox
Невозможно запустить PySpark (от Kafka до Delta) локально и получить исключение SparkException: не удается найти класс подключаемого модуля каталога для каталога «spark_catalog»