Apache Kafka-算法/策略用于从单个消费者中提取同一主题的不同分区的消息

时间:2018-05-19 23:12:14

标签: apache-kafka kafka-consumer-api kafka-producer-api

我一直在研究Apache Kafka。

让我们考虑以下示例。

考虑我有一个包含3个分区的主题。我有一个生产者和单个消费者。我正在制作我的消息而没有指定关键属性。

所以我知道在生产者方面,当我发布消息时,kafka用来为这些分区中的任何一个分配消息的策略都是Round-Robin。

现在,我想知道的是,当我启动属于某个消费者群体的单个消费者时,会听取同一个主题,它将使用什么策略从不同的分区中提取消息(因为有3个)? / p>

它是否遵循类似的循环模型,它将向分区1的领导发送获取请求,等待响应,获取响应,将记录返回到进程。然后,向分区2的领导发送获取请求,依此类推?

如果它遵循其他策略/算法,我很想知道它是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

在分区之外没有排序保证,因此使用的算法对最终用户没有意义并且可能会发生变化。

今天,在这个例子中没有发生任何非常复杂的事情。 The protocol向您显示提取请求包含一个分区,因此您可以获得每个分区的提取。这意味着订单取决于消费者。分区不会被饿死,因为分配给消费者的所有分区都会发生获取请求。