Apache Kafka多个消费者实例

时间:2016-04-01 06:45:14

标签: apache-kafka

我有一个消费者应该从主题中读取消息。此消费者实际上读取消息并将其写入时间序列数据库。我们有多个时间序列数据库实例作为多个物理机器上的集群运行。

我们的计划是在运行时间序列服务的所有计算机上部署使用者。因此,如果我有5个运行时间序列服务的节点,我将为每个节点安装一个消费者实例。所有这些消费者实例都属于同一个消费者群体。所以在图片中,设置如下所示:

enter image description here

如您所见,Producer P1和P2写入2个分区,即kafka主题的分区1和分区2。然后,我有4个时间序列服务实例,其中每个实例运行一个使用者。我应该如何正确地使用我的消费者阅读,以便我的时间序列数据库中没有重复的消息?

编辑:在阅读了Kafka文档后,我发现了这两个陈述:

If all the consumer instances have the same consumer group, then this works just like a traditional queue balancing load over the consumers.

If all the consumer instances have different consumer groups, then this works like publish-subscribe and all messages are broadcast to all consumers.

所以在上面的例子中,它表现得像一个队列?我的理解是否正确?

1 个答案:

答案 0 :(得分:2)

如果所有消费者都属于一个组(具有相同的groupId),那么kafka主题将作为队列行事。

重要提示:没有理由让消费者超过分区,因为消费者(开箱即用的kafka消费者)按分区进行缩放。

http://kafka.apache.org/images/consumer-groups.png