我试图更好地了解创建KStream和KTable时资源级别的变化。在下文中,我将提到一些我得出的结论(据我了解)(可以纠正我的观点)。
首先,每个主题都有多个分区,并且这些分区中的所有消息都以连续顺序存储在硬盘中。
KStream不需要将从主题读取的消息再次存储到另一个位置,因为偏移量足以从连接的主题中检索那些消息。 (这正确吗?)
问题关于KTable。据我了解,与KStream相比,KTable使用相同的键用来更新每个消息。为此,您必须在外部存储从主题到静态表的消息,或者在每次收到新消息时读取所有消息队列。对于时间性能,后者似乎不是很有效。我介绍的第一种方法正确吗?
答案 0 :(得分:2)
每次收到新邮件时,读取所有邮件队列。
仅在重新启动应用程序时读取所有消息。一旦应用读取了最新的偏移量,它便像其他消费者一样更新表
如何确定磁盘使用情况最终取决于您为应用程序配置的状态存储及其自身的设置。例如,您自己编写的内存vs,rocksdb与外部状态存储接口