✅MQ的重平衡会带来哪些问题?
典型回答
重平衡的概念不重复介绍了,上面提到过了,。那么重平衡会带啦哪些问题呢?
STW
大家最容易理解的就是STW的问题。 因为在重平衡过程中,消费者可能会短暂停止消费,等待新的分区/队列分配,导致吞吐下降。
当然,也可以使用Kafka中的渐进式重平衡或 下一代重平衡协议(Kafka 4.0)减少影响。 或者RocketMQ本身的重平衡机制带来的STW问题也比较小。
重复消费
除了STW的问题还有一个就是可能导致消费重复的问题,当消费者重新分配队列/分区时,可能会重新拉取道未提交的消息,导致消息被多次消费。
比如说开始分给了消费者A,A还没消费完还没提交偏移量,发生了重平衡,这个消息就会再分给消费者B,这时候就出现了重复消费了。
消息堆积
Kafka 旧版本(4.0之前)重平衡时,所有消费者都会暂停,导致短时间内消息积压。
RocketMQ 采用 定时重平衡(默认 20s),如果消费者宕机,消息可能会积压在该消费者上,直到下一次重平衡。