Memory K表/K流内存随时间的消耗
有没有一种方法可以计算java/scala应用程序中KTable/KStream随着时间的推移大约会使用多少堆(或任何其他)内存 我有一些具体的假设,我想知道它们是否正确:Memory K表/K流内存随时间的消耗,memory,apache-kafka,apache-kafka-streams,confluent-platform,Memory,Apache Kafka,Apache Kafka Streams,Confluent Platform,有没有一种方法可以计算java/scala应用程序中KTable/KStream随着时间的推移大约会使用多少堆(或任何其他)内存 我有一些具体的假设,我想知道它们是否正确: 卡夫卡流仅使用内部主题和RocksDB RocksDB是可嵌入的DB,所以它使用我的应用程序的堆内存 KStream不断地从RocksDB中删除所有记录,直到拓扑中的任何处理器不再使用这些记录(例如,对于使用指定JoinWindow的连接)(==占用的内存不多) KTable完全存储在RocksDB(=内存中) 当KTab
- 卡夫卡流仅使用内部主题和RocksDB
- RocksDB是可嵌入的DB,所以它使用我的应用程序的堆内存
- KStream不断地从RocksDB中删除所有记录,直到拓扑中的任何处理器不再使用这些记录(例如,对于使用指定JoinWindow的连接)(==占用的内存不多)
- KTable完全存储在RocksDB(=内存中)
- 当KTable接收空值记录时,它从RocksDB中删除记录(=内存已释放)
很难估计。对于一般尺寸,考虑这个指南: 卡夫卡流仅使用内部主题和RocksDB 对。您还可以使用内存存储(卡夫卡流的一部分)替换RocksDB,或者实现自己的自定义存储 RocksDB是可嵌入的DB,所以它使用我的应用程序的堆内存 RocksDB使用堆外内存,并溢出到磁盘 KStream不断地从RocksDB中删除所有记录,直到拓扑中的任何处理器不再使用这些记录(例如,对于使用指定JoinWindow的连接)(==占用的内存不多) 这取决于商店类型。对于键值存储(即,“常规”
KTable
s)数据不会被删除(显式删除消息除外,因此调用逻辑删除)。对于时间窗口/会话窗口KTables(窗口聚合的结果)和联接,有一个保留期,在此期间之后数据将被删除
KTable完全存储在RocksDB(=内存中)
RocksDB也会溢出磁盘。它不仅仅在记忆中
当KTable接收空键记录时,它从RocksDB中删除记录(=内存已释放)
null
-密钥记录的格式没有错误。我想你的意思是null
-值记录,即所谓的墓碑。这些将被视为删除。谢谢!是的,我指的是空值记录。