问题1:向一个topic的同一个partition发送消息1和消息2,消息1先发,但是发送失败了(重试也失败了),接着发送消息2成功了,而这两条消息对顺序有要求,这种场景应该怎么处理?
问题2:当一个partition的leader宕掉后,会选取新的leader,方法是在zookeeper上创建临时节点,谁创建成功谁就是新的leader。我的理解是这个过程偶然性很大,正常来说应该谁的数据量最接近宕掉的leader谁才是新的leader
小弟最近学习kafka,还希望大佬们指教
问题1:向一个topic的同一个partition发送消息1和消息2,消息1先发,但是发送失败了(重试也失败了),接着发送消息2成功了,而这两条消息对顺序有要求,这种场景应该怎么处理?
问题2:当一个partition的leader宕掉后,会选取新的leader,方法是在zookeeper上创建临时节点,谁创建成功谁就是新的leader。我的理解是这个过程偶然性很大,正常来说应该谁的数据量最接近宕掉的leader谁才是新的leader
小弟最近学习kafka,还希望大佬们指教
个人理解:
问题1: 对于有顺序要求的消息。我的理解可以有两种方式可以保证消息的顺序性。
问题2:选主问题。 我的理解你应该说的是consumer group 的 coordinator 所在的broker 挂了?目前这个应该已经不是问题了。这个应该是通过计算得到的。
partition = Math.abs(groupId.hashCode() % PartitionCount)
partition 在哪个broker, coordinator 就在哪里。(不存在抢占的问题了)
欢迎关注个人公众号:搬砖程序员带你飞