关于kafka的分区和消费者之间的关系

打印 上一主题 下一主题

主题 878|帖子 878|积分 2634

消费者和消费者组

      当生产者向 Topic 写入消息的速度超过了消费者(consumer)的处置处罚速度,导致大量的消息在 Kafka 中淤积,此时需要对消费者进行横向伸缩,用多个消费者从同一个主题读取消息,对消息进行分流。
       Kafka 的消费者都属于消费者组(consumer group)。一个组中的 consumer 订阅同样的 topic,每个 consumer 吸收 topic 一些分区(partition)中的消息。同一个分区不能被一个组中的多个 consumer 消费。
       假设现在有一个 Topic 有4个分区,有一个消费者组订阅了这个 Topic,随着组中的消费者数量从1个增加到5个时,Topic 中分区被读取的情况:

Kafka consumers 

       如果组中 consumer 的数量超过分区数,多出的 consumer 会被闲置。因此,如果想提高消费者的并行处置处罚本事,需要设置富足多的 partition 数量。
       除了通过增加 consumer 来横向伸缩单个应用程序外,还会出现多个应用程序从同一个 Topic 读取数据的情况。这也是 Kafka 设计的主要目标之一:让 Topic 中的数据可以或许满意各种应用场景的需求。
      如果要每个应用程序都可以获取到全部的消息,而不但是其中的一部分,只要保证每个应用程序有自己的 consumer group,就可以获取到 Topic 全部的消息:

Kafka consumer groups

横向伸缩 Kafka 消费者和消费者群组并不会对性能造成负面影响。
consumer和partition的数量建议

所以consumer数不要大于partition数
最好partiton数目是 consumer数目的整数倍,所以partition数目很紧张,比如取24,就很轻易设定consumer数目
kafka只保证在一个partition 上数据是有序的,但多个partition,根据你读的顺序会有不同
rebalance,所以rebalance后consumer对应的 partition会发生变化


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表