Kafka作为未来事件的数据存储

3
我有一个Kafka集群,它基于数据更改从源接收消息。在某些情况下,这些消息是为将来处理而设计的。因此,我有两个选择:
  1. 消费所有消息,并将那些要用于未来的消息发布回Kafka,使用不同的主题(主题名称中带有日期),并拥有一个Storm拓扑,查找具有该日期名称的主题。这将确保只在指定日期处理消息。
  2. 将其存储在单独的数据库中,并构建一个调度程序,读取消息并仅在未来的日期上将其发布到Kafka。
选项1更容易执行,但我的问题是:Kafka是持久数据存储吗?是否有人在Kafka中进行了这种事件处理?设计中是否存在任何漏洞?
1个回答

1
你可以配置Kafka中消息保留的时间(log.retention.hours)。但请记住,Kafka旨在用作生产者和消费者之间的实时缓冲区,而不是持久性数据存储。我认为Kafka+Storm不适合您的用例。为什么不将消息写入分布式文件系统,并安排作业(MapReduce、Spark…)来处理这些事件呢?

我想排除的选项是在考虑其他数据存储之前将数据存储在Kafka中。只是为了保持移动部件数量的少,从而使解决方案更具弹性。 - cprsd
3
尽管 Kafka 最初是设计成一种实时缓冲区,但我的理解是,它的构建方式使其完全可以被用作不可变数据存储。文档中甚至有一部分专门介绍了如何将 Kafka 作为事件源应用程序的事件存储使用。 - shmish111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接