kafka消费和重新选举的问题

发布于 2022-09-12 02:12:37 字数 263 浏览 14 评论 0

问题1:向一个topic的同一个partition发送消息1和消息2,消息1先发,但是发送失败了(重试也失败了),接着发送消息2成功了,而这两条消息对顺序有要求,这种场景应该怎么处理?

问题2:当一个partition的leader宕掉后,会选取新的leader,方法是在zookeeper上创建临时节点,谁创建成功谁就是新的leader。我的理解是这个过程偶然性很大,正常来说应该谁的数据量最接近宕掉的leader谁才是新的leader

小弟最近学习kafka,还希望大佬们指教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅冕 2022-09-19 02:12:37

个人理解:

问题1: 对于有顺序要求的消息。我的理解可以有两种方式可以保证消息的顺序性。

  • 在消息生产端,可以阻塞发送。只有msg1发送成功,再发送msg2.
  • 增加一个重试队列。将推送失败的消息可以推送到重试队列(如果推送不成功就一直重试),然后消费端保证消息的顺序(通过订阅生产topic和重试topic)。 这种情况也可以保证消息上游推送的性能,也能保证消息的有序性。

问题2:选主问题。 我的理解你应该说的是consumer group 的 coordinator 所在的broker 挂了?目前这个应该已经不是问题了。这个应该是通过计算得到的。
partition = Math.abs(groupId.hashCode() % PartitionCount)
partition 在哪个broker, coordinator 就在哪里。(不存在抢占的问题了)


欢迎关注个人公众号:搬砖程序员带你飞

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文