4.8. 最小化重新平衡的影响
在组中活跃消费者之间的分区重新平衡是:
- 消费者提交其偏移
- 要形成的新消费者组
- 为组成员分配分区的组领导者
- 组中的消费者,接收其分配并开始获取
很明显,这个过程会增加服务的停机时间,特别是在消费者组集群滚动重启后重复发生时。
在这种情况下,您可以使用 静态成员资格 的概念来减少重新平衡数量。重新平衡在消费者组成员之间平均分配主题分区。静态成员资格使用持久性,以便在会话超时后重启过程中识别消费者实例。
消费者组协调器可以使用使用 group.instance.id
属性指定的唯一 id 来识别新的消费者实例。在重启过程中,消费者被分配一个新的成员 ID,但作为静态成员,它将继续使用相同的实例 ID,并且进行相同的主题分区分配。
如果消费者应用程序没有调用至少轮询每个 max.poll.interval.ms
毫秒,则消费者被视为失败,从而导致重新平衡。如果应用程序无法处理从轮询时返回的所有记录,您可以使用 max.poll.interval.ms
属性指定从消费者轮询新消息之间的间隔(毫秒)。或者,您可以使用 max.poll.records
属性设置从消费者缓冲区返回的记录数量的最大限制,允许您的应用程序处理 max.poll.interval.ms
限值中的记录数量。
... ...
# ...
group.instance.id=UNIQUE-ID
max.poll.interval.ms=300000
max.poll.records=500
# ...