在Kafka中限制KeyValueStore的大小

时间:2019-01-15 10:46:26

标签: apache-kafka kafka-consumer-api rocksdb

我是使用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用哪种单位表示? 谢谢!

0 个答案:

没有答案