apache-kafka - Kafka GlobalKTable 延迟问题
问题描述
我有一个在商店中读作 GlobalKTable 并物化的主题。问题是如果我更新主题的键然后从存储中读取,一段时间(~0.5 秒)我会得到旧值。
这个问题的原因可能是什么?
是不是 globalktable 将每个应用程序实例的数据存储在 RocksDB 中,所以如果另一个分区上的键被更新,则需要一些时间从所有分区中提取数据并更新其本地 RockDB。如果不是,请解释 globalktable 存储如何在内部维护其状态?
上述问题如何解决?我们是否应该在期望一致性与 mysql 数据库相匹配的情况下使用 globalktable?
解决方案
是不是 globalktable 将每个应用程序实例的数据存储在 RocksDB 中,所以如果另一个分区上的键被更新,则需要一些时间从所有分区中提取数据并更新其本地 RockDB。如果不是,请解释 globalktable 存储如何在内部维护其状态?
绝对没错。在 Kafka Streams poll() 再次轮询主题并且更新是本地 RocksDB 之前,总会有一些延迟。
我们是否应该在期望一致性与 mysql 数据库相匹配的情况下使用 globalktable?
这取决于您需要什么保证——如果生产者写入 GlobalKTable 主题并且写入成功,这并不能保证 Kafka Streams 应用程序已使用此写入并更新了 GlobalKTable。生产者和消费者在 Kafka 中被设计为分离的。
推荐阅读
- java - 如何从给定的字符串中删除第二次和第三次出现的 $?
- java - 尝试在空对象引用上调用虚拟方法“boolean com.google.firebase.firestore.DocumentSnapshot.exists()”
- javascript - VueJS - 更新数组中的布尔值
- java - 在 Java 中合并两个集合
- php - 如何在 Foreach 中对值求和
- cmd - cmd 重定向:相当于 bash exec >file
- laravel - 在 laravel 的购物车会话中保存图像路径
- keras - 奇怪的 ROC 曲线 fpr>tpr ,我该如何改善它?
- java - Spring 中的表单验证 5
- php - 未定义的索引名称,在 PHP 中上传图像文件时。我只是为我的项目测试这个模块