编辑
2020-07-10
编程
00

目录

rebalance
1. 参数问题
2. 新加入监听
3. 消费者上下线

rebalance

1. 参数问题

configversiondefaultintro
heartbeat.interval.ms0.10.0.x3000session.timeout.ms 时间内需要接受到异常 heartbeat, 必须小于 session.timeout.ms,最好不大于1/3
只有在 poll() 时才会发送 heartbeat
0.11.0.x3000session.timeout.ms 时间内需要接受到异常 heartbeat, 必须小于 session.timeout.ms,最好不大于1/3
心跳独立线程发送
session.timeout.ms0.10.0.x30000由于只有在 poll() 时才会发送 heartbeat 所有要在 session.timeout.ms 发送前完成,心跳发送,session.timeout.ms 需要大于 poll() 的间隔时间,所以在一定程度上限制了 poll() 的间隔时间
0.11.0.x10000由于心跳是独立线程发送,所以session.timeout.ms 不在限制到 poll() 的时间,只需要大于 heartbeat.interval.ms 即可
max.poll.interval.ms0.10.0.x没有该参数,在一定程度上与 session.timeout.ms 混用
0.11.0.x300000poll() 的间隔时间
max.poll.records0.10.0.x2147483647一次性拉去的最大消息数量
0.11.0.x500一次性拉去的最大消息数量

由参数可以得到,消费过程对于 rebalance 的影响

0.10.0.x:

  • 当消息处理时间大于 session.timeout.ms 的时候,会发生 rebalance ,后续的 commit 也会失败
  • 而消息的处理时间处理算法问题(处理代码),最大可能存在问题的为 max.poll.records 参数,默认为 2147483647,可以适当降低到系统接受范围内

0.11.0.x:

  • 当处理时间大于 max.poll.interval.ms 的时候,会发生 rebalance ,后续的 commit 也会失败
  • max.poll.records 的默认值为 500,也可以适当降低

2. 新加入监听

kafka的监听可以使用通配符的形式,即:topic_*,当新加入一个符合格式的 topic 会加入监听内容,这时候会发生 rebalance

3. 消费者上下线

消费者的上下线,也会带来 rebalance

本文作者:Yui_HTT

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!