Kafka GlobalKTable延迟问题

Nid*_*hal 3 apache-kafka apache-kafka-streams

我有一个主题,该主题在商店中被读取为GlobalKTable并已实现。问题是,如果我更新了该主题的键,然后从存储中读取,则有一段时间(〜0.5秒),我得到了旧值。

这个问题可能是什么原因?

全局表是否将每个应用程序实例的数据存储在rocksDB中,因此,如果更新了另一个分区上的键,则需要花费一些时间从所有分区中提取数据并更新其本地rocksDB。如果不是,请说明globalktable存储如何在内部维护其状态?

上述问题如何解决?在应该期望一致性与mysql数据库相匹配的这种情况下,我们不应该使用globalktable吗?

Mat*_*Sax 5

全局表是否将每个应用程序实例的数据存储在rocksDB中,因此,如果更新了另一个分区上的键,则需要花费一些时间从所有分区中提取数据并更新其本地rocksDB。如果不是,请说明globalktable存储如何在内部维护其状态?

绝对没错。直到Kafka Streams再次轮询主题并更新为本地RocksDB时,总会有一些延迟。

在应该期望一致性与mysql数据库相匹配的这种情况下,我们不应该使用globalktable吗?

这取决于您需要的保证-如果生产者将GlobalKTable主题写入并且写入成功,则不能保证Kafka Streams应用程序已使用此写入并已更新GlobalKTable。生产者和消费者在设计上是相互分离的。