【问题标题】:Using kafka stream state store to hold over 500 million message使用 kafka 流状态存储来保存超过 5 亿条消息
【发布时间】:2019-01-02 21:18:06
【问题描述】:

我正在尝试评估带有 RocksDB 状态存储的 kafka 流是否可以在变更日志(状态主题)中使用 5 亿条消息用于生产。

用例 我有大约 8 个不同主题的数据,它们属于不同的团队,从这些主题中我关心某些数据点,所以我使用 Rocksdb 来保存对象的状态,我将来自不同的所需数据添加到其中话题。

有以这种方式使用状态存储的 kafka 流吗?

【问题讨论】:

  • 键集的基数比消息的总量更重要。例如,如果您有一个唯一键,并且 5000 亿条消息具有相同的键,那么它只会被压缩以存储一条记录。
  • 如果有 5 亿个不同的密钥,而这 5 亿个密钥的更新是随机出现的?
  • 时间也不重要。如果要存储每个唯一条目,则需要大量磁盘空间来存储 RocksDB 数据库

标签: apache-kafka apache-kafka-streams


【解决方案1】:

您始终可以使用状态存储来存储数百万个密钥。正如@cricket007 所提到的,它需要磁盘存储来存储所有条目。随着状态被刷新到文件系统。 通常数百万个键会导致存储或内存问题。只要您有可用的存储空间,它就可以工作。另外,您需要确保状态不在内存中。

根据个人经验,我在几个状态存储中大约有 1 亿个密钥,我首先遇到了磁盘空间问题,但添加更多磁盘后,它工作正常。

此外,您可以阅读有关容量规划的更多信息以获得一些公平的想法: https://docs.confluent.io/current/streams/sizing.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多