我有一个事件流(我们也可以称它们为“消息”,甚至只是“数据”)来自一个基于时间的事件代理。事件代理可以是Kafka或Amazon Kinesis或Microsoft Event Hubs,尽管假设它是 Kafka。
我的目标是把这个事件流放入冷库;也就是说,通过 Hadoop/Spark 存储数据以供将来分析。这意味着我想采用这种“闲聊”的事件流并将其转换为 HDFS 中的“大块”文件。在云环境中,我可能会使用 S3 或 Azure 存储而不是 HDFS。
我还希望我的解决方案具有成本效益;例如,使用 Avro/ORC 等序列化格式来降低我的磁盘空间成本。我也像一个至少一次保证给定事件被保存到冷库(一次且仅一次的奖励积分)。
我的核心问题是:
- 人们是如何解决这个问题的?
- 是否有组件已经处理这种情况?
- 我需要自己开发解决方案吗?
- 至少,它们有什么推荐的模式吗?