Pull to refresh

Comments 4

Чё и я нифига не понял, что это за Кафка и зачем она нужна. Топики какие то. Это мессадж брокер очередной что ли?

Меня смутило то что кафка стримс инстанс будет скачивать весь топик и строить таблицу в пямяти. А если у меня очень очень много данных? Например заказы с десятков или сотен магазинов. Как делается холодный старт? Что произойдет при рестарте инстансов? Или при стандартном скейл ап/даун?

Или я что-то не понял?

KafkaStreams дефолтно использует RocksDB, как key-value хранилище, и сохраняет стейт на диск, поэтому с точки зрения объема данных вы ограничены только размером диска.

При холодном старте или перезапуске с очисткой диска (например, перезапуск пода в kubernetes), приложение будет вычитывать весь топик целиком и для сотен миллионов записей, это может занимать десятки минут. Это действительно проблема. Решается она несколькими путями:

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

  2. можно сохранять данные на диске при перезапуске приложения (например в kubernetes - через Persistent Volume Claim)

  3. можно научить RocksDB использовать не локальный диск, а S3, например (https://github.com/rockset/rocksdb-cloud)

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

Sign up to leave a comment.