Ограничение размера KeyValueStore в Кафке - PullRequest
0 голосов
/ 15 января 2019

Я - Кафка для java-микросервисов с Streams, и мы также используем KeyValueStore для того, чтобы поддерживать локальное состояние. Наш сервис работает, но мы хотели бы ограничить объем диска, который KeyValueStore (поддерживаемый RocksDB) может занять локально. Есть ли какой-нибудь вариант, который мы могли бы использовать для этого? Я пытался использовать что-то вроде:

</p>

<p>public class RocksDbMaxDbSizeConfigurationSetter implements RocksDBConfigSetter {
  private final static Logger LOG = LoggerFactory.getLogger(RocksDbMaxDbSizeConfigurationSetter.class);
  private long maxDbSizeInGb = 1;</p>

<p>@Override
  public void setConfig(String storeName, Options options, Map configs) {
    LOG.info("Setting custom properties for RocksDb store [{}] setting the maxSize to [{}].", storeName, maxDbSizeInGb);
    options.setCompactionStyle(CompactionStyle.FIFO);
    CompactionOptionsFIFO compactionOptionsFIFO = new CompactionOptionsFIFO();
    compactionOptionsFIFO.setMaxTableFilesSize(maxDbSizeInGb);</p>

options.setCompactionOptionsFIFO(compactionOptionsFIFO);

}}

но когда я использую этот класс, у меня появляется странный побочный эффект, значения удаляются из KeyValueStore, даже если они содержат 4 записи. Моя попытка верна? Есть ли какой-либо другой способ ограничить объем данных, которые принимает rocksdb? В каком блоке выражается maxTableFileSize? Спасибо!

...