use*_*872 22 apache-kafka kafka-consumer-api
我正在使用kafka 0.10.1.1并与以下3个属性混淆.
heartbeat.interval.ms
session.timeout.ms
max.poll.interval.ms
Run Code Online (Sandbox Code Playgroud)
heartbeat.interval.ms - 这是在0.10.1中添加的,它将在民意调查之间发送心跳. session.timeout.ms - 这是为了在没有对kafka的请求时开始重新平衡,并在每次轮询时重置它. max.poll.interval.ms - 这是在整个民意调查中.
但是,卡夫卡何时开始重新平衡?为什么我们需要这3个?所有这些的默认值是什么?
谢谢
ame*_*tic 30
假设我们正在谈论Kafka 0.10.1.0或更高版本,其中每个消费者实例使用两个线程来运行.一个poll是调用它的用户线程; 另一个是心跳线程,专门处理心跳事物.
session.timeout.ms用于心跳线程.如果协调器在此时间间隔过去之前未能从消费者那里获得任何心跳,则会将消费者标记为失败并触发新一轮的重新平衡.
max.poll.interval.ms是用户线程.如果消息处理逻辑太重而不能花费大于此时间间隔的成本,则协调器明确让消费者离开该组并且还触发新一轮的重新平衡.
heartbeat.interval.ms用于让其他健康消费者更快地意识到再平衡.如果协调器触发重新平衡,则其他消费者只会通过接收包含REBALANCE_IN_PROGRESS异常的心跳响应来了解此情况.更快地发送心跳请求,消费者知道它需要更快地重新加入该组.
建议值::
session.timeout.ms相对较低的值,例如10秒.
max.poll.interval.ms:根据您的加工要求
heartbeat.interval.ms:相对较低的价值,更好的1/3session.timeout.ms
session.timeout.ms 与 heartbeat.interval.ms 密切相关。
heartbeat.interval.ms控制 KafkaConsumer poll() 方法向组协调器发送心跳的频率,而session.timeout.ms控制消费者可以在不发送心跳的情况下持续多长时间。
因此,这两个属性通常一起修改。heatbeat.interval.ms 必须小于 session.timeout.ms,通常设置为超时值的三分之一。因此,如果 session.timeout.ms 为 3 秒,则 heartbeat.interval.ms 应为 1 秒。
max.poll.interval.ms - 使用消费者组管理时调用 poll() 之间的最大延迟。这对消费者在获取更多记录之前可以空闲的时间设置了上限。如果在此超时到期之前未调用 poll(),则消费者被视为失败,并且组将重新平衡,以便将分区重新分配给另一个成员
| 归档时间: |
|
| 查看次数: |
14241 次 |
| 最近记录: |