Apache Kafka - Требования к месту на жестком диске KStream и KTable - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь лучше понять, что происходит на уровне ресурсов при создании KStream и KTable. Ниже я приведу некоторые выводы, к которым я пришел, как я их понимаю (не стесняйтесь меня поправлять).

Во-первых, каждая топи c имеет несколько разделов и все сообщения в этих разделах. хранятся на жестком диске (дисках) в непрерывном порядке.

KStream не нужно хранить сообщения, которые считываются из топи c, снова в другое место, поскольку смещение достаточно для получить эти сообщения из topi c, к которому он подключен. (Это правильно?)

Вопрос касается KTable. Как я понимаю, KTable, в отличие от KStream, обновляет каждое сообщение с тем же ключом. Чтобы сделать это, вы должны либо сохранять внешние сообщения, поступающие из topi c в таблицу stati c, либо читать всю очередь сообщений при каждом поступлении нового сообщения. Последнее не кажется эффективным в отношении времени. Первый подход, который я представил, правильный?

1 Ответ

1 голос
/ 08 января 2020

читать все очереди сообщений, каждый раз, когда приходит новое сообщение.

Все сообщения читаются только в начале sh запуска приложения. Как только приложение считывает до последнего смещения, оно просто обновляет таблицу, как и любой другой потребитель

. Как определяется использование диска, в конечном счете, зависит от хранилища состояний, которое вы настроили для приложения, а также от его собственных настроек. Например, в оперативной памяти vs rocksdb против внешнего интерфейса хранилища состояний, который вы написали самостоятельно

...