Apache kafka 卡夫卡康苏美尔

Apache kafka 卡夫卡康苏美尔,apache-kafka,apache-camel,Apache Kafka,Apache Camel,我的应用程序有N个实例正在运行。实例数始终大于Kafka分区数。例如,消费者组的6个实例,从4个Kafka分区消费。。。因此,在任何一点上,只有4个实例在实际使用 在这种情况下,我是否可以暂停卡夫卡消费者骆驼路线,而不会导致卡夫卡尝试与其他潜在消费者重新平衡?我的理解是,被暂停的路由将停止轮询,导致另一个接收负载。这不是骆驼问题,而是卡夫卡问题。重新平衡由卡夫卡处理,并在消费者明确离开消费群体或悄然死亡(不再发送心跳)时触发 Kafka 2.3引入了一个名为“”的新功能,以避免仅仅因为消费者重启

我的应用程序有N个实例正在运行。实例数始终大于Kafka分区数。例如,消费者组的6个实例,从4个Kafka分区消费。。。因此,在任何一点上,只有4个实例在实际使用


在这种情况下,我是否可以暂停卡夫卡消费者骆驼路线,而不会导致卡夫卡尝试与其他潜在消费者重新平衡?我的理解是,被暂停的路由将停止轮询,导致另一个接收负载。

这不是骆驼问题,而是卡夫卡问题。重新平衡由卡夫卡处理,并在消费者明确离开消费群体或悄然死亡(不再发送心跳)时触发

Kafka 2.3引入了一个名为“”的新功能,以避免仅仅因为消费者重启而重新平衡

但在您的情况下(另一个消费者必须承担离开消费者的负担),我认为由于使用的协议,卡夫卡必须触发所有消费者的再平衡

关于再平衡及其在可用性和容错性之间的权衡,请参见

根据评论进行编辑

如果要避免重新平衡,我认为您必须同时增加
session.timeout.ms
(心跳间隔)和
max.poll.interval.ms
(处理超时)

但即使你把它们设置得很高,我想它也不会可靠地工作,因为路线暂停仍然可能在心跳之前发生(只是时间不好)


有关
会话.timeout.ms
最大轮询.interval.ms
之间的差异,请参阅。是的,也许我应该换一句话:如果消费者没有心跳,或者没有轮询,卡夫卡将尝试重新平衡。这意味着,除非我将消费者的“MaxPollIntervals”增加到足够高的数量,否则我无法暂停骆驼路线(以断路器方式)。是吗?还有,@burki谢谢你的链接。我不知道静态成员资格。我扩展了我的答案,因为有两种不同的“超时”设置