当前位置: 首页 > news >正文

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

消费者和消费者组

      当生产者向 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会发生变化


http://www.mrgr.cn/news/11209.html

相关文章:

  • 更改了ip地址怎么改回来
  • Excel技能分享:根据匹配公式设置单元格背景色
  • white-space: pre;与white-space: pre-line;的区别
  • K8S部署MySQL5.7的主从服务
  • Linux系统——服务器长时间训练不间断指令(nohup的简单用法)
  • Bootstrap 4 颜色
  • git flow如何切换到develop
  • (十二)Flink Table API
  • 基于单片机的教室人数自动统计系统设计
  • 白鲸开源中标申万宏源DataOps数据开发运维一体化平台采购项目!
  • 重装系统前如何备份数据?让重装无后顾之忧
  • 原型图和UI的区别与联系
  • 千益畅行,旅游卡,案例分享
  • 基于AT89C51单片机的可手动定时控制的智能窗帘设计
  • Python酷库之旅-第三方库Pandas(102)
  • Node.js 安装与使用及连接 MongoDB 的详细教程
  • 【SQL基础】【leetcode】SQL50题
  • Java多数据源的三种实现方式
  • 华为M60首次降价,消费回暖能延续?
  • MySQL集群 主从复制 和 高可用 配置详解