赞
踩
消费模式介绍:
消费者总体工作流程:
消费者组(一个组消费者数大于分区数,多余的闲置)
消费者组初始化流程:(第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)
消费者 最大最小拉取大小,一次拉取条数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。