Короткий ответ на этот вопрос - добиться отказоустойчивости.
Подробно :
changelog
делает хранилище состояний в приложении Kafka Streams отказоустойчивым , Когда ваше приложение загружает больше данных в хранилище состояний, оно выталкивается в changelog
topi c, поэтому, если узел, на котором выполняется приложение, выходит из строя, тогда для загрузки используется changelog
topi c хранилище состояний с самым последним состоянием.
Каждый поток или экземпляр приложения получает свой собственный раздел changelog
topi c, чтобы каждый экземпляр мог воссоздать свое состояние после перезапуска приложения после сбоя.
Данные загружаются в topi c автоматически Kafka Streams по мере обновления обновлений в хранилище состояний.
Я бы посоветовал пройти главу 11 «Руководства по определению Kafka» - оно содержит довольно хорошее объяснение архитектуры Kafka Streams и шаблонов обработки потоков.
Надеюсь, это поможет.