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)

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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值