Kafka GlobalKTable延迟问题

时间:2019-01-09 06:49:12

标签: apache-kafka apache-kafka-streams

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

此问题的原因可能是什么?

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

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

1 个答案:

答案 0 :(得分:3)

  

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

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

  

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

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

相关问题