【问题标题】:Apache Kafka Consumer Group Example Across Cluster跨集群的 Apache Kafka 消费者组示例
【发布时间】:2018-11-27 02:14:24
【问题描述】:
我是 Kafka 新手,我已经在 3 台服务器上实现了 KAFKA 集群,并且在 3 台服务器中我正在运行消费者,每台服务器都有 3 个消费者,即 3x3 =9 消费者。
我的问题是:-
1. 当我在集群中为同一主题提供相同的组 ID 时,我没有收到任何重复的消息,但是当我在集群中为同一主题提供 3 个不同的消费者组 ID 时,我收到的重复消息恰好是 3?
请帮助如何使用消费者组?
【问题讨论】:
标签:
apache-kafka
kafka-consumer-api
【解决方案1】:
我认为以下类比可能有助于理解这个概念。考虑一个新员工加入你的公司。所以你有一个employees 主题。
现在,该员工必须访问 IT 部门以获取所有设备(计算机等),必须与安全部门会面以获取他的员工标签并接受简报,他必须与人力资源部的人会面以了解正确的行为和公司政策等
现在 IT 部门有 5 名工人(5 名消费者),HR 有 4 名工人(4 名消费者),安全人员是一个男人的表演(单一消费者)。
所以你有 3 个消费组,每个消费组都要处理所有新员工,所以每个员工处理 3 次。
现在介绍分区概念 - 您将员工排成一行(分区)。每个分区由每个消费者组的单个消费者处理(这是 kafka 限制)。假设你有 20 行员工。每个 IT 人员处理 4 条线路,每个 HR 人员处理 5 条线路,而糟糕的安全人员处理所有 20 条线路。
希望它能澄清一点......
【解决方案2】:
拥有 GroupId 的全部原因是该组中的消费者可以一起工作,即不使用相同的消息。
拥有一个消费者组意味着你可以在多个消费者之间分配消费工作 = 性能提升。
没有组 ID,消费者充当完全独立的消费者,因此他们每个人都阅读所有消息。