消费模式介绍:

kafka 查看 节点编号_大数据

消费者总体工作流程:

kafka 查看 节点编号_数据_02

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

kafka 查看 节点编号_kafka_03

kafka 查看 节点编号_kafka_04

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

session.timeout.ms=45S

max.poll.interval.ms=5m

kafka 查看 节点编号_分布式_05

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

消费者组详细消费流程:

kafka 查看 节点编号_分布式_06

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

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

配置参数:partition.assignment.strategy

kafka 查看 节点编号_kafka_07

 

kafka 查看 节点编号_kafka 查看 节点编号_08

kafka 查看 节点编号_数据_09

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

kafka 查看 节点编号_kafka 查看 节点编号_10

再平衡策略: 

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

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

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

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

kafka 查看 节点编号_大数据_11

kafka 查看 节点编号_数据_12

kafka 查看 节点编号_大数据_13

再平衡策略: 

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

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

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

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

          谁是leader按照谁的策略来?

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

kafka 查看 节点编号_大数据_14

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

kafka 查看 节点编号_分布式_15

再平衡策略: 

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的默认维护位置:

kafka 查看 节点编号_大数据_16

kafka 查看 节点编号_分布式_17

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

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

kafka 查看 节点编号_分布式_18

 查看命令:

kafka 查看 节点编号_数据_19

kafka 查看 节点编号_数据_20

 自动提交offset:

  enable.auto.commit

  auto.commit.interval.ms

kafka 查看 节点编号_kafka 查看 节点编号_21

 demo:

kafka 查看 节点编号_分布式_22

手动提交offset:

kafka 查看 节点编号_数据_23

demo:

kafka 查看 节点编号_大数据_24

 

kafka 查看 节点编号_分布式_25

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

指定offset消费:

kafka 查看 节点编号_kafka_26

kafka 查看 节点编号_数据_27

  

kafka 查看 节点编号_数据_28

 demo:

kafka 查看 节点编号_分布式_29

 指定时间消费:

kafka 查看 节点编号_kafka_30

 漏消费和重复消费:

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

kafka 查看 节点编号_分布式_31

 消费者事务:

kafka 查看 节点编号_kafka_32

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

  a 增加消费者

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

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

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

kafka 查看 节点编号_大数据_33