apache-kafka-streams - 为什么 Kafka Streams 对 GlobalKTable 状态存储强制禁用日志记录?
问题描述
为什么全局表不能在 kafka 中启用日志记录?
代码:
if (loggingEnabled) {
throw new TopologyException("StateStore " + storeName + " for global table must not have logging enabled.");
}
当我重新启动我的 kafka 应用程序时,globalstore 中的所有数据存储都变得干净了。我怎么可能让它容忍。
解决方案
GlobalKTable
s 使用他们的输入主题来保证容错。因此,我不确定你的意思是
当我重新启动我的 kafka 应用程序时,globalstore 中的所有数据存储都变得干净了。
只要正确配置了输入主题并启用了日志压缩,GlobalKTable
即使您在本地删除状态,也会在启动时重新创建状态。
启用日志记录没有意义,因为每个KafkaStreams
实例都加载整个GlobalKTable
数据(即,数据被广播到所有实例)。尽管每个分片使用一个主题分区,但变更日志主题是为共享状态而设计的。因此,这两个概念并不一致,而是相互矛盾。
推荐阅读
- reactjs - 在反应中导入scss:找不到模块scss
- odoo - 如何为odoo10更改中文电子邮件模板语言
- ruby-on-rails - 序列化与 ActiveModelSerializer 中的自定义字段的关系
- linux - ubuntu bash 中的错误:。./setenv.sh:没有这样的文件或目录
- php - googlemaps codeigniter 未显示在视图中
- unity3d - Unity在自由落体时旋转播放器不起作用
- python - 尝试使用 PYMC3 和 NetworkX 进行非常基本的(3 个分类变量)贝叶斯推理
- node.js - 如何使用 fs.writeFileSync 将 .js 文件写入路径
- python - 迭代包含嵌套字典的多层次列表的项目并将其打印到python中的csv
- c# - “new RestClient()”调用在我的 Windows 服务中不起作用