12.7.3.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_ 1 max.poll.interval.ms=300000 2 max.poll.records=500 3 # ...