我们正在一个项目中解码实时消息文件,这些文件以文本文件的形式传输给我们。该文件是非结构化文本,但我们有一个规范来解码它。有不同的主题,每个主题每小时至少收到800个消息文件,平均文件大小为1 KB。要求是在它们到达时实时解码所有文件,并将解码数据以结构化形式存储在数据库中,该数据库必须被拉到前端应用程序。收到文件后,出现在前端的ETA不到一分钟。
这是我想到的建议数据流: -
消息文件(.txt) - >解码 - >存储在DB - > Web App中
有人能告诉我你对以下问题的回答吗?
你的任务有一些未知的选择。
预期的总负载是多少? 10个科目x 800个消息x每小时1kb的文本不需要任何特定的东西,你可以使用简单的东西,如Spring Boot app或Go app。你在谈论BigData堆栈,我假设你会有很多主题。
像Cloudera这样的大数据堆栈至少有两个用于高规模流处理的好工具:Kafka和Spark Streaming。 Kafka是一个消息代理,可以通过支持复制,高可用性等来处理高负载.Spark Streaming是一个允许您即时处理数据的框架。特别是如果你有一些复杂的处理逻辑。
关于小文件,它实际上取决于你的情况。为什么以及如何存储它们?
此外,还有很多不同的流式框架,如Apache Storm,Apache Flink,Apache Beam或Kafka Streams。他们每个人都有自己的优点和缺点。