Kafka 消费者静态成员资格的 group.instance.id 应该是什么?

我们正在尝试为 Kafka 消费者设置静态成员资格,以解决容器维护升级问题。每隔一段时间,容器就会被部署并进行改进,这可以以随机顺序删除消费者应用程序实例。升级的终止过程是 SIGKILL,同时创建运行实例的副本。当实例离开组并加入组时,这会导致重新平衡。

静态成员资格对这种情况很有帮助。我想知道 group.instance.id 是否应该为消费者应用程序的每个实例设置唯一(appname-instance-1、appname-instnace-2 等),或者它应该对消费者组是唯一的(类似于消费者组id 即整个消费者组的一个实例 id)

我们是否需要从代理方/消费者方更改任何其他配置以更快地重新平衡?

stack overflow What would group.instance.id should be for Kafka consumer static membership?
原文答案

答案:

作者头像

enter image description here

图片取自 KIP-345

  • group.instance.id 是消费者的标识符,因此在消费者级别应该是唯一的
  • group.id 是组的标识符,因此在组级别是唯一的
作者头像

group.instance.id 由用户配置为唯一确定其消费者实例

如果您使用kafka流,则在内部添加 - 附加的后缀。

例子:

group.instance.id = kafka-streams-instance-1

如果此应用具有3个线程,则在内部分配:

kafka-streams-instance-1-1
kafka-streams-instance-1-2
kafka-streams-instance-1-3