前言
在上一篇的消费者代码中,里面提到了一个很重要的点,那就是在代码中必须要指明消费者组,为什么要这样呢?
这个跟kafka自身在架构设计时是有一定的关系的,通过之前的学习我们知道,kafka天生就是一个分布式的架构,通过分区实现数据的生产的高吞吐量,生产者将数据发送到不同的分区后,接下来,就是消费者消费数据了;
针对消费者来说,broker的规则是:
- 不同的消费者可以消费某个topic下的不同分区的数据;
- 同一个消费者只能消费某个topic下的具体的某个分区的数据,这个在消费的时候由系统规则默认指定分区
- 同一个消费组下的消费者,不能消费相同分区的数据
这里需要说的就是第三点,这一点很重要,为什么呢?这就回到了上面的问题,生产者将消息发送到不同的分区上面,是按照一定的规则进行发送的,即假如100条数据,3个分区,则每个分区都将均匀的承担一部分数据;
假如说,某个消费组内有多个消费者,为了能完全消费某个topic下的所有数据,必然要求该消费组下的不同的消费者各自消费不同分区的数据,这样才有可能完全消费,否则将会出现某个分区的数据没有消费者消费的尴尬的情况,这样一来,对broker来说,很难进行分区数据的管理;
如何验证这个问题呢?下面来启动3个消费者,让这3个消费者都归属于某个消费组
1、3个消费者类
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143303.html