Comments 4
Чё и я нифига не понял, что это за Кафка и зачем она нужна. Топики какие то. Это мессадж брокер очередной что ли?
Меня смутило то что кафка стримс инстанс будет скачивать весь топик и строить таблицу в пямяти. А если у меня очень очень много данных? Например заказы с десятков или сотен магазинов. Как делается холодный старт? Что произойдет при рестарте инстансов? Или при стандартном скейл ап/даун?
Или я что-то не понял?
KafkaStreams дефолтно использует RocksDB, как key-value хранилище, и сохраняет стейт на диск, поэтому с точки зрения объема данных вы ограничены только размером диска.
При холодном старте или перезапуске с очисткой диска (например, перезапуск пода в kubernetes), приложение будет вычитывать весь топик целиком и для сотен миллионов записей, это может занимать десятки минут. Это действительно проблема. Решается она несколькими путями:
можно поднять много инстансов, каждый из которых будет выкачивать себе только часть партиций.
можно сохранять данные на диске при перезапуске приложения (например в kubernetes - через Persistent Volume Claim)
можно научить RocksDB использовать не локальный диск, а S3, например (https://github.com/rockset/rocksdb-cloud)
Если данные сохранились на диске тем или иным способом, то при перезапуске KafkaStreams продолжит использовать эти данные, и топик не придется перечитывать с начала.
Как мы используем Kafka Streams в команде хранилища данных Vivid Money?