内存存储中 Kafka 流的大小
Size of the Kafka Streams In Memory Store
我正在对 Kafka 主题流进行聚合并保存到内存状态存储中。我想知道在内存中累积数据的确切大小,这可以找到吗?
我查看了 jconsole 和 Confluent Control Center 上的 jmx 指标,但似乎没有任何相关内容,请问有什么我可以用来找出这个问题的吗?
您可以通过 KeyValueStore#approximateNumEntries()
获取内存存储中存储的键值对的数量(对于默认的内存存储实现,这个数字实际上是准确的)。如果您可以估算每个键值对的字节大小,则可以进行数学计算。
然而,估计对象的字节大小在 Java 中通常很难做到。问题是,Java 没有提供任何方法来接收对象的实际大小。此外,对象可以嵌套,这使它变得更加困难。最后,除了实际数据之外,每个对象总会有一些元数据开销,并且此开销取决于 JVM 实现。
我正在对 Kafka 主题流进行聚合并保存到内存状态存储中。我想知道在内存中累积数据的确切大小,这可以找到吗?
我查看了 jconsole 和 Confluent Control Center 上的 jmx 指标,但似乎没有任何相关内容,请问有什么我可以用来找出这个问题的吗?
您可以通过 KeyValueStore#approximateNumEntries()
获取内存存储中存储的键值对的数量(对于默认的内存存储实现,这个数字实际上是准确的)。如果您可以估算每个键值对的字节大小,则可以进行数学计算。
然而,估计对象的字节大小在 Java 中通常很难做到。问题是,Java 没有提供任何方法来接收对象的实际大小。此外,对象可以嵌套,这使它变得更加困难。最后,除了实际数据之外,每个对象总会有一些元数据开销,并且此开销取决于 JVM 实现。