如何解决Kafka Streams QueryableStore-ReadOnlyKeyValueStore快速访问
我有以下设置。在kubernetes上运行的Kafka-Broker。一个带有kafka流的SpringBoot应用程序,一个作为KSteram的输入主题。
在流上,我对密钥进行分组,并使用聚合并构建MaterializedView-> KeyValueStore RocksDB。 该数据库包括135048个键/值对。
我这样读取所有键/值对
private ReadOnlyKeyValueStore<String,PriceDomain> keyValueStore;
public List<PriceModel> fetchAllPriceInErrorState() {
if (this.keyValueStore == null) {
this.keyValueStore = queryService.getQueryableStore(
ModelStrings.PRICE_STORE_NAME,QueryableStoreTypes.keyValueStore()
);
}
while (keyValueIterator.hasNext()) {
KeyValue<String,PriceDomain> keyValue = keyValueIterator.next();
PriceDomain priceDomain1 = keyValue.value;
PriceModel priceModel = convertToPriceModel(priceDomain1);
priceModelList.add(priceModel);
}
}
这将需要约3-4秒的时间来执行。有没有一种方法可以增加从存储中获取所有键值对的执行时间? 当然,大多数时候我可以直接通过键访问值,这将很快。但是有时我需要所有键/值对。
假设将来会有更多的键/值对(约500-1000k),那么这将花费约5-10倍的时间
感谢帮助
解决方法
我认为您必须设置更多数量的分区(基于构建商店的输入主题),而不是运行多个此类应用程序。每个实例只会消耗部分消息(键->值),并且运行速度更快
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。