我的应用程序有N个实例正在运行。实例的数量总是大于Kafka分区的数量。例如,一个消费者组的6个实例,从4个Kafka分区消费.因此,在任何时候,实际上只有4个实例在使用。
在这种情况下,我是否可以暂停卡夫卡消费骆驼路线,而不让卡夫卡试图向其他潜在消费者重新平衡?我的理解是,挂起的路线会停止轮询,而另一条则会接载。
发布于 2020-02-28 09:25:09
这不是骆驼,而是卡夫卡的问题。再平衡由Kafka处理,每当使用者显式地离开使用者组或静默死亡(不再发送心跳)时触发。
Kafka2.3引入了一个名为"静态隶属度“的新特性,以避免仅仅因为消费者重新启动而进行再平衡。
但在你的情况下(另一个消费者必须承担离开消费者的负担),我认为卡夫卡必须触发一个相对于所有消费者的再平衡,因为所使用的协议。
还请参阅这篇文章,以深入研究再平衡及其在可用性和容错性之间的权衡。
编辑由于注释
如果您想避免再平衡,我认为您必须同时增加session.timeout.ms (心跳间隔)和max.poll.interval.ms (处理超时)。
但是,即使你把它们设置得很高,我想它也不能可靠地工作,因为路由暂停仍然可能发生在心跳之前(简单地说,时间不对)。
有关session.timeout.ms和max.poll.interval.ms之间的区别,请参见session.timeout.ms。
https://stackoverflow.com/questions/60392807
复制相似问题