首页 > 解决方案 > GlobalKTable 刷新逻辑

问题描述

当对 a 的基础主题进行更新时GlobalKTable,所有应用程序实例KStream获取最新数据的逻辑是什么?以下是我的后续问题:

  1. GlobalKTable当更新发生时,是否会被锁定在记录级别或表级别?
  2. 根据这篇博客:Kafka GlobalKTable Latency Issue,延迟可以达到 0.5s 吗?!如果是这样,有没有其他方法可以减少延迟?
  3. 由于GlobalKTable默认使用 RocksDB 作为状态存储,RocksDB 的所有功能都可以使用吗?

我了解GlobalKTable不应将其用于需要频繁更新查找数据的用例。是否有任何其他键值存储可用于可能需要更新表数据的用例 - 例如 Redis?

我找不到太多关于GlobalKTable其内部结构的文档。有可用的文件吗?

标签: apache-kafkaapache-kafka-streamsrocksdbktable

解决方案


GlobalKTables 是异步更新的。因此,无法保证不同实例何时更新。

此外,“全局线程”使用专用的“全局使用者”,您可以单独微调以减少延迟:https ://docs.confluent.io/current/streams/developer-guide/config-streams.html#naming

RocksDB 通过 JNI 集成,JNI 接口并没有暴露 RocksDB 的所有功能。此外,“表”抽象“隐藏”了 RocksDB,因此有些扩展。rocksdb.config.setter但是,您可以通过( https://docs.confluent.io/current/streams/developer-guide/config-streams.html#rocksdb-config-setter )调整 RocksDB 。


推荐阅读