apache-kafka - Kafka10.1 heartbeat.interval.ms,session.timeout.ms和max.poll.interval.ms

标签 apache-kafka kafka-consumer-api

我正在使用kafka 0.10.1.1,并与以下3个属性混淆。

heartbeat.interval.ms
session.timeout.ms
max.poll.interval.ms

heartbeat.interval.ms -在0.10.1中添加的,它将在两次轮询之间发送心跳。
session.timeout.ms -如果没有对kafka的请求,它将开始重新平衡,并且每次轮询都会重置它。
max.poll.interval.ms -这是整个民意调查。

但是,卡夫卡什么时候开始重新平衡?为什么我们需要这3个?所有这些的默认值是什么?

谢谢

最佳答案

假设我们谈论的是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:相对较低的值,最好是session.timeout.ms的1/3

关于apache-kafka - Kafka10.1 heartbeat.interval.ms,session.timeout.ms和max.poll.interval.ms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991845/

相关文章:

docker - 通过多个Docker容器监听同一端口

java - 卡夫卡 : what is the point of using "acknowledgment.nack" if I can simply "not acknowledgment.acknowledge"

java - Apache Kafka 集群启动失败并出现 NoNodeException

spring-boot - 我可以在运行时向我的@kafkalistener 添加主题吗

apache-kafka - 卡夫卡消费者列表

java - 将配置传递给 Kafka 客户端的推荐方法

java - ConcurrentMessageListenerContainer 在分区存在时减少并发计数

java - 如何捕获Kafka-Spring中的反序列化错误?

apache-kafka - JDBC Kafka Connector 可以拉取多个数据库的数据吗?

apache-spark - 如何在 Spark Streaming DirectAPI 中同时读取每个 Kafka 分区