Какие кафки используются внутренние темы - PullRequest
0 голосов
/ 10 мая 2019

Мы используем kafka stream api для агрегации, в которой мы также используем group by.Мы также используем хранилище состояний, где оно сохраняет данные входных тем.

Что я заметил, это

Кафка внутренне создает 3 вида темы

  1. Changelog-<storeid>-<partition>
  2. Repartition-<storeid>-<partition>
  3. <topicname>-<partition>

Что я не могу понять, так это:

  1. Почему это создает тему журнала изменений, когда у меня есть все данные в <topic>-<partition>
  2. Содержит ли тема перераспределения данные после группировки.
  3. и я вижу, что размер Changelog и topicname-parition примерно одинаковы.

Чем отличаются данные, так что для этого нужно сохранить другой файл.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Существует несколько типов внутренних тем Kafka:

  • __consumer_offsets используется для хранения смещенных коммитов по теме / разделу.
  • __transaction_state используется для сохранения состояния дляПроизводители и потребители кафки используют транзакционную семантику.
  • _schemas используется Реестром схем для хранения всех схем, метаданных и конфигурации совместимости.
  • Следующие три темы являются примерами внутренних тем, используемых Kafka Streams.Первые два представляют собой информацию о регулярном соединении, третий фактически является постоянным хранилищем состояний RocksDB:
    • {consumer-group}--KSTREAM-JOINOTHER-0000000005-store-changelog
    • {consumer-group}--KSTREAM-JOINTHIS-0000000004-store-changelog
    • {consumer-group}--incompleteMessageStore-changelog

Дополнительная информация здесь:

0 голосов
/ 12 мая 2019

Внутренние темы Kafka 'Changelog' и 'repartition' относятся к потокам Kafka.

Из Кафки Вики,

Kafka Streams допускает обработку потока с сохранением состояния, то есть операторов, которые имеют внутреннее состояние. Это внутреннее состояние управляется в так называемых государственных хранилищах. Хранилище состояний может быть эфемерным (потеря при сбое) или отказоустойчивым (восстановление после сбоя). Реализация по умолчанию, используемая DSL Kafka Streams, представляет собой отказоустойчивое хранилище состояний, использующее 1. внутренне созданную и уплотненную тему журнала изменений (для отказоустойчивости) и 2. один (или несколько) экземпляров RocksDB (для поиска в кэше по значению ключа). Таким образом, в случае запуска / остановки приложений и перемотки / повторной обработки эти внутренние данные должны корректно обрабатываться.

Темы журнала изменений создаются, когда в потоке выполняются операции объединения / агрегирования. Фактически результат вызова агрегации создает хранилище состояний, а для отказоустойчивости хранилище состояний резервируется в разделе журнала изменений Kafka.

Результаты агрегирования сохраняются в этой внутренней теме. Состояние будет восстановлено в разделе журнала изменений при перезапуске приложений и изменении идентификатора приложения.

Переразделение разделов создается, когда в потоке выполняются операции изменения ключа. Например, операция groupByKey () создает тему перераспределения. Проверьте Страница JIRA , чтобы узнать больше об автоматическом создании темы повторного разделения.

Эти две внутренние темы позволяют потокам Kafka иметь отказоустойчивые возможности обработки потоков с отслеживанием состояния.

Содержит ли тема перераспределения данные после группировки? - Да

Размер Changelog и topicname-parition примерно одинаковы - Возможно, результаты всех операций агрегирования сохраняются в этом разделе.

Для более подробной информации, пожалуйста, проверьте Kafka Wiki page .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...