首页 > 解决方案 > Kafka GlobalKTable 延迟问题

问题描述

我有一个在商店中读作 GlobalKTable 并物化的主题。问题是如果我更新主题的键然后从存储中读取,一段时间(~0.5 秒)我会得到旧值。

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

是不是 globalktable 将每个应用程序实例的数据存储在 RocksDB 中,所以如果另一个分区上的键被更新,则需要一些时间从所有分区中提取数据并更新其本地 RockDB。如果不是,请解释 globalktable 存储如何在内部维护其状态?

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

标签: apache-kafkaapache-kafka-streams

解决方案


是不是 globalktable 将每个应用程序实例的数据存储在 RocksDB 中,所以如果另一个分区上的键被更新,则需要一些时间从所有分区中提取数据并更新其本地 RockDB。如果不是,请解释 globalktable 存储如何在内部维护其状态?

绝对没错。在 Kafka Streams poll() 再次轮询主题并且更新是本地 RocksDB 之前,总会有一些延迟。

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

这取决于您需要什么保证——如果生产者写入 GlobalKTable 主题并且写入成功,这并不能保证 Kafka Streams 应用程序已使用此写入并更新了 GlobalKTable。生产者和消费者在 Kafka 中被设计为分离的。


推荐阅读