我正在学习Kafka,请在此处阅读介绍部分
https://kafka.apache.org/documentation.html#introduction
特别是关于消费者的部分。在引言的倒数第二段中,其内容为
卡夫卡做得更好。通过在主题内具有并行性(即分区)的概念,Kafka能够在用户进程池中提供排序保证和负载均衡。这是通过将主题中的分区分配给消费者组中的消费者来实现的,以便每个分区都由组中的一个消费者完全消费。通过这样做,我们确保使用者是该分区的唯一读取器,并按顺序使用数据。由于存在许多分区,因此仍然可以平衡许多使用者实例上的负载。但是请注意,使用者实例不能超过分区。
我的困惑源于最后一句话,因为在该段右上方的图像中,作者描述了两个消费者组和一个4分区主题,消费者实例多于分区!
消费者实例不能超过分区也没有意义,因为那样分区就会非常小,并且似乎为每个消费者实例创建新分区的开销会使Kafka陷入困境。我知道分区用于容错并减少任何一台服务器上的负载,但是上面的句子在分布式系统的背景下是没有意义的,该系统应该能够同时处理数千个消费者。