面试问Kafka,这一篇全搞定(2)
Consumer Group 消费者组 我们在消费数据时会在代码里面指定一个 group.id,这个 id 代表的是消费组的名字,而且这个 group.id 就算不设置,系统也会默认设置: conf.setProperty("group.id","tellYourDream") 我们所熟知的一些消息系统一般来说会这样设计,就是只要有一个消费者去消费了消息系统里面的数据,那么其余所有的消费者都不能再去消费这个数据。 可是 Kafka 并不是这样,比如现在 ConsumerA 去消费了一个 TopicA 里面的数据: consumerA: group.id = a consumerB: group.id = a
consumerC: group.id = b consumerD: group.id = b 再让 ConsumerB 也去消费 TopicA 的数据,它是消费不到了,但是我们在 ConsumerC 中重新指定一个另外的 group.id,ConsumerC 是可以消费到 TopicA 的数据的。 而 ConsumerD 也是消费不到的,所以在 Kafka 中,不同组可有唯一的一个消费者去消费同一主题的数据。 所以消费者组就是让多个消费者并行消费信息而存在的,而且它们不会消费到同一个消息。 如下,ConsumerA,B,C 是不会互相干扰的: consumer group:a consumerA consumerB consumerC (编辑:ASP站长网) |