KTable/KStream 随着时间的推移内存消耗
KTable/KStream memory consumption over time
有没有办法计算 KTable/KStream 在 java/scala 应用程序中随时间大约使用多少堆(或任何其他)内存?
我有一些具体的假设,我想知道它们是否正确:
Kafka 流仅使用内部主题和 RocksDB。
RocksDB 是可嵌入的数据库,所以它使用我的应用程序的堆内存。
KStream 不断地从 RocksDB 中删除所有记录,因为它们不再被拓扑中的任何处理器使用(例如,用于与指定的 JoinWindow 连接)(==没有那么多内存使用)
KTable完全存储在RocksDB中(==在内存中)
当KTable接收到空值记录时,它从RocksDB中删除记录(==内存释放)
很难估计。对于一般尺码,请参考本指南:https://docs.confluent.io/current/streams/sizing.html
Kafka streams use internal topics and RocksDB only.
是的。您还可以将 RocksDB 替换为 in-memory 存储(属于 Kafka Streams 的一部分)或实现您自己的自定义存储。
RocksDB is embeddable DB, so it uses heap memory of my application.
RocksDB 使用 off-heap 内存并溢出到磁盘。
KStream constantly deletes all records from RocksDB after they can no longer be used by any of processors in topology (e.g for join with specified JoinWindow) (== not so much memory used)
这取决于商店类型。对于 key-value 存储(即 "regular" KTable
s)数据不会被删除(显式删除消息除外,so-call 墓碑)。对于 time-windowed/session-windowed KTables(windowed-aggregations 的结果)和连接,有一个保留期,之后数据将被删除。
KTable is fully stored in RocksDB (== in memory)
RocksDB 也会溢出磁盘。不只是 in-memory。
When KTable receive null-key record it deletes record from RocksDB (== memory freed up)
null
-关键记录没有格式错误。我假设你的意思是 null
值记录,so-called 墓碑。这些被视为删除。
有没有办法计算 KTable/KStream 在 java/scala 应用程序中随时间大约使用多少堆(或任何其他)内存?
我有一些具体的假设,我想知道它们是否正确:
Kafka 流仅使用内部主题和 RocksDB。
RocksDB 是可嵌入的数据库,所以它使用我的应用程序的堆内存。
KStream 不断地从 RocksDB 中删除所有记录,因为它们不再被拓扑中的任何处理器使用(例如,用于与指定的 JoinWindow 连接)(==没有那么多内存使用)
KTable完全存储在RocksDB中(==在内存中)
当KTable接收到空值记录时,它从RocksDB中删除记录(==内存释放)
很难估计。对于一般尺码,请参考本指南:https://docs.confluent.io/current/streams/sizing.html
Kafka streams use internal topics and RocksDB only.
是的。您还可以将 RocksDB 替换为 in-memory 存储(属于 Kafka Streams 的一部分)或实现您自己的自定义存储。
RocksDB is embeddable DB, so it uses heap memory of my application.
RocksDB 使用 off-heap 内存并溢出到磁盘。
KStream constantly deletes all records from RocksDB after they can no longer be used by any of processors in topology (e.g for join with specified JoinWindow) (== not so much memory used)
这取决于商店类型。对于 key-value 存储(即 "regular" KTable
s)数据不会被删除(显式删除消息除外,so-call 墓碑)。对于 time-windowed/session-windowed KTables(windowed-aggregations 的结果)和连接,有一个保留期,之后数据将被删除。
KTable is fully stored in RocksDB (== in memory)
RocksDB 也会溢出磁盘。不只是 in-memory。
When KTable receive null-key record it deletes record from RocksDB (== memory freed up)
null
-关键记录没有格式错误。我假设你的意思是 null
值记录,so-called 墓碑。这些被视为删除。