Стоимость Kstream против стоимости KTable по отношению к государственному магазину - PullRequest
1 голос
/ 09 июля 2019

Пытаясь лучше понять, как настроить мой кластер для запуска моего приложения Kafka-Stream, я пытаюсь лучше понять объем данных, которые будут задействованы.

В связи с этим, хотя я быстро вижу, что для KTable требуется хранилище состояний, мне интересно, создаст ли Kstream из тем, немедленно означает копирование всего журнала этой темы в хранилище состояний, очевидно, только в виде добавления. предположим. То есть, особенно если мы хотим выставить поток для запроса?

Кафка автоматически реплицирует Данные в хранилище состояний при их перемещении в теме источника, когда это Kstream? Как уже говорилось выше, это кажется очевидным для Ktable из-за обновления, но для Kstream я просто хочу подтверждение того, что происходит?

1 Ответ

4 голосов
/ 09 июля 2019

Хранилища состояний создаются всякий раз, когда вызывается какая-либо операция с состоянием или во время потока окон.

Вы правы, что KTable требуется государственный магазин. KTable - это абстракция потока изменений, где каждая запись представляет обновление. Внутренне это реализовано с использованием RocksDB, где все обновленные значения хранятся в хранилище состояний и в разделе журнала изменений. Хранилище состояний можно в любое время восстановить из раздела журнала изменений.

Хотя KStream имеет другую концепцию, он представляет абстракцию в потоке записи с неограниченным набором данных в формате только для добавления. Он не создает хранилища состояний при чтении исходной темы.

Если вы не хотите видеть обновленный журнал изменений, то можно использовать KStream вместо KTable, поскольку это позволяет избежать создания нежелательного хранилища состояний. KTables всегда дороги по сравнению с KStreams. Также это зависит от того, как вы хотите использовать данные.

Если вы хотите предоставить поток для запроса, вам нужно материализовать поток в хранилище состояний.

...