我是使用Streams的Java微服务的Kafka,我们也使用KeyValueStore来保持本地状态。 我们的服务正在运行,但是我们想限制KeyValueStore(由RocksDB支持)可以在本地使用的磁盘数量。我们有什么选择可以使用吗? 我正在尝试使用类似的东西:
public class RocksDbMaxDbSizeConfigurationSetter implements RocksDBConfigSetter {
private final static Logger LOG = LoggerFactory.getLogger(RocksDbMaxDbSizeConfigurationSetter.class);
private long maxDbSizeInGb = 1;
@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);
options.setCompactionOptionsFIFO(compactionOptionsFIFO);
}}
但是当我使用此类时,我有一个奇怪的副作用,即使值包含4个条目,它们也会从KeyValueStore中删除。 我的尝试对吗?还有其他方法来限制rocksdb占用的数据量吗? maxTableFileSize用哪种单位表示? 谢谢!