我们正在尝试构建一个BI系统,该系统将收集应由其他组件处理的大量数据。
我们决定有一个中间层来收集、存储和分发数据是个好主意。
数据由一组日志消息表示。每个日志消息具有以下内容:
- 产品 - 操作类型 - 日期 - 消息负载
系统规格:
- 平均值:1.5百万条消息/分钟 - 峰值:15百万条消息/分钟 - 平均消息大小为:700字节(约1.3TB/天) - 我们有200种产品 - 我们有1100种操作类型 - 数据应每5分钟摄取一次 - 消费者应用程序通常需要1-2-3种产品与1-2-3种操作类型(我们需要快速访问1种产品/1种操作类型)
我们认为使用 Kafka 可以完成这项工作,但我们遇到了几个问题。我们尝试为每个操作类型创建一个主题,并为每个产品创建一个分区。通过这样做,我们可以提取要消费的1种产品/1种操作类型。
最初,我们遇到了“打开太多文件”的问题,但在将服务器配置更改为支持更多文件后,我们出现了内存不足的错误(每个节点分配了12GB)。此外,在大量主题时,kafka 的稳定性也存在问题。
我们的问题是:
- Kafka 是否适用于我们的用例场景?它能够支持如此多的主题/分区吗? - 我们是否可以以另一种方式在 Kafka 中组织数据以避免这些问题,但仍然能够快速访问1种产品/1种操作类型? - 您是否推荐其他更适合此类问题的 Kafka 替代方案?
我们决定有一个中间层来收集、存储和分发数据是个好主意。
数据由一组日志消息表示。每个日志消息具有以下内容:
- 产品 - 操作类型 - 日期 - 消息负载
系统规格:
- 平均值:1.5百万条消息/分钟 - 峰值:15百万条消息/分钟 - 平均消息大小为:700字节(约1.3TB/天) - 我们有200种产品 - 我们有1100种操作类型 - 数据应每5分钟摄取一次 - 消费者应用程序通常需要1-2-3种产品与1-2-3种操作类型(我们需要快速访问1种产品/1种操作类型)
我们认为使用 Kafka 可以完成这项工作,但我们遇到了几个问题。我们尝试为每个操作类型创建一个主题,并为每个产品创建一个分区。通过这样做,我们可以提取要消费的1种产品/1种操作类型。
最初,我们遇到了“打开太多文件”的问题,但在将服务器配置更改为支持更多文件后,我们出现了内存不足的错误(每个节点分配了12GB)。此外,在大量主题时,kafka 的稳定性也存在问题。
我们的问题是:
- Kafka 是否适用于我们的用例场景?它能够支持如此多的主题/分区吗? - 我们是否可以以另一种方式在 Kafka 中组织数据以避免这些问题,但仍然能够快速访问1种产品/1种操作类型? - 您是否推荐其他更适合此类问题的 Kafka 替代方案?