我一直在研究Kafka Streams应用程序上的磁盘写入,并将拓扑减少到最低限度,即:
KStream<String, JsonElement> stream = builder.stream("input-topic");
然而,在docker stats
上,我可以观察到我的应用程序不断向磁盘写入某些内容。我已经检查了容器,看不到任何可疑的文件句柄。
如果我评论上述行,这个问题就会消失,所以我得出的结论是,只是从一个主题中阅读会在磁盘上写一些东西,但我无法猜测是什么以及为什么。
此外,我注意到它与提交间隔设置严格相关;增加它会使写入频率降低。每次写入大约 130kB 的数据。
这是预期行为吗?
Kafka Streams 将检查点文件写入本地磁盘。这些检查点文件实际上仅用于有状态任务,但即使没有有状态操作也会创建(在这种情况下,检查点文件几乎为空(。
这是一个已知问题,并在即将发布的 1.1 版本中修复:https://issues.apache.org/jira/browse/KAFKA-6499