gpt4 book ai didi

memory - 随着时间的推移,KTable/KStream 内存消耗

转载 作者:行者123 更新时间:2023-12-02 00:53:07 24 4
gpt4 key购买 nike

有没有办法计算 Java/scala 应用程序中 KTable/KStream 随着时间的推移大约将使用多少堆(或任何其他)内存?

我有一些具体的假设,我想知道它们是否正确:

  • Kafka 流仅使用内部主题和 RocksDB。
  • RocksDB 是可嵌入的 DB,因此它使用我的应用程序的堆内存。
  • KStream 不断地从 RocksDB 中删除所有记录,因为它们不能再被拓扑中的任何处理器使用(例如与指定的 JoinWindow 连接)(== 没有使用太多内存)
  • KTable 完全存储在 RocksDB 中(== 在内存中)
  • 当 KTable 收到空值记录时,它会从 RocksDB 中删除记录(== 内存已释放)
  • 最佳答案

    很难估计。对于一般尺寸,请考虑本指南:https://docs.confluent.io/current/streams/sizing.html

    Kafka streams use internal topics and RocksDB only.



    是的。您还可以将 RocksDB 替换为内存存储(属于 Kafka Streams 的一部分)或实现您自己的自定义存储。

    RocksDB is embeddable DB, so it uses heap memory of my application.



    RocksDB 使用堆外内存,也会溢出到磁盘。

    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)



    这取决于商店类型。对于键值存储(即“常规” KTable s),数据不会被删除(显式删除消息除外,即所谓的墓碑)。对于时间窗口/ session 窗口 KTables(窗口聚合的结果)和连接,有一个保留期,之后数据将被删除。

    KTable is fully stored in RocksDB (== in memory)



    RocksDB 也会溢出做磁盘。它不仅在内存中。

    When KTable receive null-key record it deletes record from RocksDB (== memory freed up)


    null -key 记录没有格式错误。我猜你的意思是 null -值记录,即所谓的墓碑。那些被视为删除。

    关于memory - 随着时间的推移,KTable/KStream 内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132218/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com