Назначение statetore и changelog topi c в потоках кафки? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть потоковое приложение kafka, в котором оно использует stateStore (при поддержке RocksDB).

Все, что делает потоковый поток, это получает данные из kafka topi c и помещает их в хранилище состояний. (Есть другой поток, который читает данные из Statestore и выполняет обработку бизнес-логи c).

Я заметил, что из-за stateStore создается новый kafka topi c "changelog".

Но я не понял, для чего служит "список изменений" kafka topi c?

  • Зачем это (журнал изменений)?
  • Какая связь между разделами состояния хранилища и кафки "список изменений"?
  • Кто помещает данные в эту топи c ? («История изменений»)

1 Ответ

3 голосов
/ 02 мая 2020

Короткий ответ на этот вопрос - добиться отказоустойчивости.

Подробно :

changelog делает хранилище состояний в приложении Kafka Streams отказоустойчивым , Когда ваше приложение загружает больше данных в хранилище состояний, оно выталкивается в changelog topi c, поэтому, если узел, на котором выполняется приложение, выходит из строя, тогда для загрузки используется changelog topi c хранилище состояний с самым последним состоянием.

Каждый поток или экземпляр приложения получает свой собственный раздел changelog topi c, чтобы каждый экземпляр мог воссоздать свое состояние после перезапуска приложения после сбоя.

Данные загружаются в topi c автоматически Kafka Streams по мере обновления обновлений в хранилище состояний.

Я бы посоветовал пройти главу 11 «Руководства по определению Kafka» - оно содержит довольно хорошее объяснение архитектуры Kafka Streams и шаблонов обработки потоков.

Надеюсь, это поможет.

...