将 Kafka 消息复制到 S3 并返回的最有效方法是什么

问题描述 投票:0回答:1

我们目前正在考虑以最有效的方式(所需的存储和吞吐量)保存(即备份)和加载(即恢复)Kafka 主题中的所有消息的方法。目标是将消息保存在 S3 中以获得额外的持久性,并在需要时从那里恢复它们,例如在灾难恢复场景中。我们架构中的一些工作负载使用 Kafka 来持久化数据,因此必须涵盖这种场景。

理想情况下,我们不想处理消息的序列化/反序列化,这意味着完全忽略消息的格式(文本、JSON、Avro、parquet 或任何类似的内容)以及对模式的任何需求。我们希望以“原始”格式保存消息并以相同的方式恢复它们。

使用 Kafka Connect 似乎不可能实现这一点,因为根据这篇 1 博客文章和我们自己的测试,它需要使用 SerDes。

我们基本上希望有一种方法可以代表用户备份和恢复主题消息,而无需我们关心消息格式和架构。类似于进行数据库备份,您不关心表的列。

我们正在考虑几种选择: - 使用

kcat
(kafka 猫 - https://docs.confluence.io/platform/current/tools/kafkacat-usage.html) - 假设有可能,编写我们自己的生产者和消费者代码,从 Kafka 读取原始二进制格式的消息并将其保存到 S3

作为替代方案,我们可以在另一个集群上使用 MirrorMaker 2,但这不能满足我们将消息保存到 S3 的需要,以便在意外删除复制主题的情况下提高持久性。归根结底,副本并不是真正的备份。

实现这一目标的最佳方法是什么?我们还应该考虑哪些其他选择?有什么建议或意见吗?

amazon-s3 apache-kafka aws-msk
1个回答
0
投票

您可以查看https://www.kannika.io/ 它是专为您所描述的内容而设计的产品......

免责声明:我是 Kannika 的创始人

© www.soinside.com 2019 - 2024. All rights reserved.