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