Kafka Streams QueryableStore - ReadOnlyKeyValueStore 快速访问

Kafka Streams QueryableStore - ReadOnlyKeyValueStore fast access

我有以下设置。 kubernetes 上的 Kafka-Broker 运行。一个带有 kafka-streams 和一个输入主题作为 KSteram 的 SpringBoot 应用程序。

在流中,我对键进行分组并使用聚合并构建一个 MaterializedView -> KeyValueStore RocksDB。 数据库包括 135048 key/value 对。

我读了所有 key/value-这样的对

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 秒来执行。有没有办法增加从商店中获取所有键值对的执行时间? 当然,大多数时候我可以直接通过键访问值,这会很快。但有时我需要所有 key/value 对。

假设将来有更多的 key/value 对 (~500-1000k) 那么这将花费 ~ 5-10 倍的时间

感谢帮助

我认为您必须设置比 运行 几个这样的应用程序更多的分区数(输入主题基于哪个商店被构建)。每个实例只会消耗一些消息子集(Key -> Values)并且它会运行更快