微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 kafka 中为唯一消费者提交偏移量?

如何解决如何在 kafka 中为唯一消费者提交偏移量?

我们希望我们所有的 kafka 消费者都能接收来自 Kafka(来自所有分区)的所有消息,因此我们从每台机器上动态生成唯一的 group.id。如果我们有任何新机器加入,那么那台新机器也将有新的 group.id,所以这个逻辑有效,我们所有的 kafka 消费者(机器)从 kafka 集群获取所有数据。

现在我的困惑是 -

  • 这种方法是否存在任何可能丢失数据的缺点?
  • 如果我们采用这种方法,我们应该如何提交偏移量?我们应该启用自动提交偏移为 true 还是应该在处理完数据后手动提交?如果我们手动提交offset,那么是让所有机器(消费者)独立于其他机器处理完数据后手动提交offset,还是在所有人都处理完数据后只需要一台机器提交offset?
  • 使用这种方法还有什么我需要担心的需要确保的吗?

使用这种方法确保我们不会丢失任何数据的最佳方法是什么?

解决方法

问。这种方法是否存在我们可能丢失数据的缺点?

Ans - 拥有多个 kafka 使用者没有任何缺点。您需要进行设置,以免丢失任何数据。 您可以参考这篇文章,其中介绍了我们可能会丢失数据的情况以及哪些设置可以帮助我们避免这种情况:https://blog.softwaremill.com/help-kafka-ate-my-data-ae2e5d3e6576

问。如果我们采用这种方法,我们应该如何提交偏移量?我们应该启用自动提交偏移为 true 还是应该在处理完数据后手动提交?是否可以让所有机器(消费者)在独立于其他机器处理数据后手动提交偏移量,否则会导致任何问题?

Ans - 如果您不想在处理数据和重新读取数据以再次处理过程中出现任何故障时丢失数据,您应该手动设置偏移量,因为如果自动提交偏移量可能会导致您丢失一些数据,以防您的进程在部分处理数据时死亡

另外,请参考以下博客,其中详细说明了如何在 kafka 中丢失数据的所有情况: https://jack-vanlightly.com/blog/2018/9/14/how-to-lose-messages-on-a-kafka-cluster-part1 https://jack-vanlightly.com/blog/2018/9/18/how-to-lose-messages-on-a-kafka-cluster-part-2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。