0

我试图更好地了解创建 KStream 和 KTable 时资源级别会发生什么。下面,我将提到一些我得出的结论,据我所知(请随时纠正我)。

首先,每个主题都有多个分区,这些分区中的所有消息都以连续的顺序存储在硬盘中。

KStream 不需要将从主题读取的消息再次存储到另一个位置,因为偏移量足以从连接到的主题中检索这些消息。(这个对吗? )

问题与KTable有关。据我了解,与 KStream 相比,KTable 使用相同的密钥更新每条消息。为此,您必须在外部将来自主题的消息存储到静态表中,或者在每次新消息到达时读取所有消息队列。后者在时间性能方面似乎不是很有效。我提出的第一种方法是否正确?

4

1 回答 1

2

每次有新消息到达时,读取所有消息队列。

所有消息仅在应用程序重新启动时读取。一旦应用程序读取到最新的偏移量,它就会像任何其他消费者一样更新表

如何确定磁盘使用量最终取决于您为应用程序配置的状态存储,以及它自己的设置。例如,内存中、rocksdb 与您自己编写的外部状态存储接口

于 2020-01-08T13:45:38.753 回答