Consumer核心参数与Consumer消费原理
2023-02-27 本文已影响0人
CoderInsight
1,简述核心参数
【heartbeat.interval.ms】
默认值:3000
consumer心跳时间,必须得保持心跳才能知道consumer是否故障了,然后如果故障之后,就会通过心跳下发rebalance的指令给其他的consumer通知他们进行rebalance的操作
【session.timeout.ms】
默认值:10000
kafka多长时间感知不到一个consumer就认为他故障了,默认是10秒
【max.poll.interval.ms】
默认值:300000
如果在两次poll操作之间,超过了这个时间,那么就会认为这个consume处理能力太弱了,会被踢出消费组,分区分配给别人去消费,一遍来说结合你自己的业务处理的性能来设置就可以了
【fetch.max.bytes】
默认值:1048576
获取一条消息最大的字节数,一般建议设置大一些
【max.poll.records】
默认值:500条
一次poll返回消息的最大条数,
【connections.max.idle.ms】
默认值:540000
consumer跟broker的socket连接如果空闲超过了一定的时间,此时就会自动回收连接,但是下次消费就要重新建立socket连接,这个建议设置为-1,不要去回收
【auto.offset.reset】
earliest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
latest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从当前位置开始消费
none
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
注:我们生产里面一般设置的是latest
【enable.auto.commit】
默认值:true
设置为自动提交offset
【auto.commit.interval.ms】
默认值:60 * 1000
每隔多久更新一下偏移量
如果消费者这端要保证数据被处理且只被处理一次:
屏蔽掉了下面这2种情况:
(1)数据的重复处理
(2)数据的丢失
一般来说:需要手动提交偏移量,需要保证数据处理成功与保存偏移量的操作在同一事务中就可以了
2,简述Consumer消费原理
- Consumer消费过程简介:
- Consumer 指定了要消费的 Topic 之后,会向 Broker Controller 发送消费请求。
- Broker Controler会为Consumer 分配一个或者几个Partition Leader,并将其获得的 Partition 的Offset发给Consumer。
- 当 Consumer 消费完一条消息之后会向 Broker 发送一条消息被消费的反馈,即该消息的Offset。
- 当Broker收到 Consumer的Offset之后,会更新到相应的__consumer_offset中。
- 以上过程会一直重复,直到Consumer停止了消费请求。
- Consumer 可以重置 Offser,从而可以灵活的存到在Broker上的信息。
- offset
- offset介绍
- Offset管理
- __consumer_offsets 的消息格式(K-V)
- 提交 offset
- 自动提交
- 手动提交
- 自动提交与手动提交的区别
- 更精细的提交offset
- 删除过期消息
- Coordinator 协调器
- Coordinator的作用
- 如何选择哪台是coordinator??
- 消费者组 consumer Group
- Consumer Group Rebalance
- rebalance介绍
- rebalance的问题
- consumer Group Rebalance 高级
- Consumer Group Coordinator
- kafka 如何为 Consumer Group确定Coordinator
- rebalance的弊端
- 如何避免组成员数量发生变化
- 增加实例
- 减少实例
- 解决非必要的Rebalance