在数据存储中存储事件历史的Kafka消费者

lawou6xi  于 2022-12-22  发布在  Apache
关注(0)|答案(1)|浏览(149)

我们正在使用Kafka作为事件流平台。到目前为止,有一个数据生产者和3个消费者,他们每个人都订阅了Kafka中的一个或几个主题。这工作得很好。仅供参考,Kafka保留期设置为5秒,因为我们不需要持续超过5秒的事件。
现在我们有一个新的用例来持久化最近20分钟的所有事件(在另一个数据存储中)进行后期分析(主要用于培训目的)。因此,这个新Kafka用户应该订阅所有现有主题。我们只想在数据存储中保存最近20分钟的事件历史,而不是会话的所有事件(这可能代表几个小时或几天)。目标吞吐量是170 kb/s,20分钟内几乎有1 M的消息要持久化。
我们想知道哪种架构模式适合这种情况?与当前用例相比,这不是一个名义上的用例,因此我们不希望降低系统的性能来管理它。我们的想法是尽快清空topci。将数据推送到队列中,并让另一个应用以不同的速率负责从队列中阅读数据并将其持久化到存储中。
我们将非常感谢任何经验或反馈来管理这样的用例。特别是关于过期/pruge机制的使用。当然,我们需要一些高度可用和可伸缩的东西。
问候

0yg35tkg

0yg35tkg1#

您可以使用Kafka Connect和topics.regex=*来使用所有内容并写入到一个位置,但最终总延迟会非常高,特别是在不断添加新主题的情况下。
如果你有retention.ms=5000,那么我不知道Kafka是否是一个适合你的用例的工具,但也许你可以吸收到Splunk或Elasticsearch或其他时间序列系统,在那里你可以适当地按20分钟的窗口切片。

相关问题