当前位置:   article > 正文

kafka-消费基础_kafka 消费

kafka 消费

消费模式介绍:

消费者总体工作流程:

 消费者组(一个组消费者数大于分区数,多余的闲置)

 消费者组初始化流程:(第7步再平衡会影响kafka性能)

session.timeout.ms=45S

max.poll.interval.ms=5m

 FAQ: broker节点挂了后会对消费者组里的消费计划如何影响(长时间未重新分配分区的情况下)?

消费者组详细消费流程:

生产经验:分区的分配以及再分配:

分配策略:Range、RoundRobiin、Sticky、CooperativeSticky(3.0新增)

配置参数:partition.assignment.strategy

 

 Range:(针对一个topic。按照数量+均匀性有限给前面的分)

再平衡策略: 

45s以内当consumer0挂掉收不到信息,

 45s内未消费的数据:后续其他consumer进行了再分配,但是整个原先计划的分区会统一给到一个消费者(比如012给了消费者1或2)

 45s后生产的数据:0挂掉不接受数据。1、2重新基于Range均匀分配(比如:1消费4个,2消费3 个)

RoundRobin(针对集群中所有的Topic而言,)

再平衡策略: 

45s以内当consumer0挂掉收不到信息,

 45s内未消费的数据:后续对consumer0未消费的分区数,再其他消费者再分配(比如0、6给2,3给3)

 45s后生产的数据:0挂掉不接受数据。整个分区重新分配:(比如:1消费0、2、4、6;2消费1、3、5)

FAQ:一个消费者组里的多个消费者配置了不同的分配策略会咋样?

          谁是leader按照谁的策略来?

sticky:(和range的区别是不是按顺序分的,是随机分的)

 **每次组内的消费者重启后都会重新分配(7个分区、一个消费者组3个消费者)

再平衡策略: 

45s以内当consumer1挂掉收不到信息,

 45s内未消费的数据:后续对consumer1未消费的分区数,再其他消费者再分配(比如0、6给0,3给2)即 0、1、4、6 分配给consumer0,2、3、5分配给consumer1

 45s后生产的数据:0挂掉不接受数据。整个分区可能不重新分配保持和45s内未消费的数据的重新分配策略即 0、1、4、6 分配给consumer0,2、3、5分配给consumer1

Offset位移:

offset的默认维护位置:

 这里压缩类似存储压缩:compact,保留最新数据

查询系统主题消费数据: consumer.properties-exclude.internal.topics=false。默认是true,不让查看

 查看命令:

 自动提交offset:

  enable.auto.commit

  auto.commit.interval.ms

 demo:

手动提交offset:

demo:

 

 PS:考虑效率使用异步提交

指定offset消费:

 

 

 demo:

 指定时间消费:

 漏消费和重复消费:

漏消费:手动提交引起              重复消费:自动提交引起

 消费者事务:

 数据积压:消费者如何提高吞吐量

  a 增加消费者

  b 生产者速度调优、消费者调优结合配置

     生产者:linger.ms、batch.size、压缩策略、缓冲大小(RecordAccumulator)

     消费者 最大最小拉取大小,一次拉取条数

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/621227
推荐阅读
相关标签
  

闽ICP备14008679号