我何时需要在消费者组中扩展消费者数量?当生产者速度快时,消费者有哪些触发器可以引起扩展?
我何时需要在消费者组中扩展消费者数量?当生产者速度快时,消费者有哪些触发器可以引起扩展?
实际上,自动缩放并不是一个好主意,因为在Kafka中,消息顺序是在分区中得到保证的。
来自Kafka文档:
- 由生产者发送到特定主题分区的消息将按照它们发送的顺序追加。也就是说,如果同一生产者发送记录M1和记录M2,并且M1先发送,则M1的偏移量将低于M2,并且在日志中更早出现。
- 消费者实例按照日志中存储的顺序查看记录。
如果您增加了更多的分区和更多的消费者,以满足分区数量的要求,那么您将无法满足消息的排序保证。
假设您有10个分区,您的键数为102,则此消息将被发送到分区:102%10 = 2
但是,如果您将分区数量增加到15个,那么具有相同键(102)的消息将被发送到不同的分区:102%15 = 12
正如您所看到的,使用这种方法无法保证具有相同键的消息的顺序。
注意:顺便提一下,Kafka默认使用murmur2(record.key())%num partitions
算法。 上面的计算只是一个示例。