Дубликаты глобальных каталогов государственных магазинов - PullRequest
0 голосов
/ 08 мая 2020

У меня есть приложение для обработки потока kafka, в котором используются библиотеки spring-cloud-stream. Это приложение использует 3 значения application.id для прослушивания 3 тем. Для двух из этих входных тем после обработки данных я помещаю sh сообщения в соответствующие выходные темы, которые затем использую для создания GlobalKTables следующим образом:

                streamsBuilder.globalTable(firstSSTopic, Consumed.with(Serdes.String(), Serdes.String()),
                        Materialized.<String, String, KeyValueStore<Bytes, byte[]>>
                                as("ss-1")
                                .withKeySerde(Serdes.String())

                                .withValueSerde(Serdes.String()));


                streamsBuilder.globalTable(secondSSTopic, Consumed.with(Serdes.String(), Serdes.String()),
                        Materialized.<String, String, KeyValueStore<Bytes, byte[]>>
                                as("ss-2")
                                .withKeySerde(Serdes.String())

                                .withValueSerde(Serdes.String()));

Итак, вопрос в том, что application.id использует ли он данные из "firstSSTopi c" и "secondSSTopi c"? Или это просто GlobalStreamThread как отдельный потребитель без какой-либо группы? Когда я проверяю каталог состояний по умолчанию (tmp / kafka-streams), я вижу файлы sst и log для обоих глобальных хранилищ состояний во всех трех каталогах application.id. Как мне этого избежать? Поскольку это займет в 3 раза больше места на диске и потенциально может привести к быстрому заполнению хранилища.

1 Ответ

2 голосов
/ 08 мая 2020

GlobalKTable может использоваться только в качестве правого ввода для соединений потоковой таблицы.

, но не мог понять, почему он будет сохранять одни и те же данные внутри один и тот же экземпляр приложения в нескольких местах

Это дает возможность выполнять соединения с KStream без необходимости повторного разделения входного потока.

Как я могу этого избежать?

Этого нельзя избежать, используя GlobalKTable.

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