我一直在研究Apache Kafka。
让我们考虑以下示例。
考虑我有一个包含3个分区的主题。我有一个生产者和单个消费者。我正在制作我的消息而没有指定关键属性。
所以我知道在生产者方面,当我发布消息时,kafka用来为这些分区中的任何一个分配消息的策略都是Round-Robin。
现在,我想知道的是,当我启动属于某个消费者群体的单个消费者时,会听取同一个主题,它将使用什么策略从不同的分区中提取消息(因为有3个)? / p>
它是否遵循类似的循环模型,它将向分区1的领导发送获取请求,等待响应,获取响应,将记录返回到进程。然后,向分区2的领导发送获取请求,依此类推?
如果它遵循其他策略/算法,我很想知道它是什么?
提前谢谢。
答案 0 :(得分:1)
在分区之外没有排序保证,因此使用的算法对最终用户没有意义并且可能会发生变化。
今天,在这个例子中没有发生任何非常复杂的事情。 The protocol向您显示提取请求包含一个分区,因此您可以获得每个分区的提取。这意味着订单取决于消费者。分区不会被饿死,因为分配给消费者的所有分区都会发生获取请求。