Проблема переполнения Store: настройка самоочистки RocksDB в Kafka Streams
<img src="https://habrastorage.org/getpro/habr/upload_files/3cb/6a1/574/3cb6a157418424801ee55b21472cac4b.jpg" /><p>Одной из сильных сторон Kafka Streams является возможность хранить состояние приложения локально. По умолчанию в качестве локального хранилища используется RocksDB — встроенная key-value база данных, расположенная на диске.</p><p>Но есть одна особенность, о которой редко задумываются в начале проекта. State Store отлично умеет хранить данные, но совершенно не знает, когда их пора удалить. Если приложение однажды записало объект в Store, он останется там до тех пор, пока приложение самостоятельно его не удалит. Никакого встроенного TTL для обычного State Store в Kafka Streams нет. На небольших объёмах это практически незаметно.</p><p>Однако если сервис работает месяцами и ежедневно обрабатывает миллионы сообщений, локальное состояние начинает непрерывно расти. RocksDB постепенно превращается в архив всех когда-либо обработанных данных, большая часть которых уже никогда не понадобится.</p> <a href="https://habr.com/ru/articles/1061512/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1061512#habracut">Узнать больше</a>
