我们正在尝试构建一个BI系统,该系统将收集应由其他组件处理的大量数据 我们决定建立一个中间层来收集,存储和放置是一个好主意。分发数据。
数据由大量日志消息表示。每条日志消息都包含:
系统细节:
我们以为卡夫卡会做这个工作,但我们遇到了几个问题 我们尝试为每个产品类型和每个产品的分区创建一个主题。通过这样做,我们可以提取1个产品/ 1动作类型来消费。
最初我们遇到“打开文件太多”的问题,但在我们更改服务器配置以支持更多文件后,我们发现内存不足错误(12GB分配/节点)
此外,我们遇到卡夫卡稳定性问题。在众多话题中,卡夫卡倾向于冻结。
我们的问题:
答案 0 :(得分:3)
我发布此答案,以便其他用户可以看到我们采用的解决方案。
由于Kafka的限制(导致操作系统达到几乎达到最大打开文件的大量分区)和性能稍差,我们决定使用apache commons,guava,trove等库来构建一个自定义框架以满足我们的需求等,以实现我们所需的性能。
整个系统(分布式和可扩展)有3个主要部分:
ETL(读取数据,处理数据并将其写入二进制文件)
Framework Core(用于读取二进制文件并计算统计数据)
作为旁注:我们尝试过其他解决方案,如HBase,Storm等,但没有一个能满足我们的需求。