最佳答案
我正在学习卡夫卡,阅读这里的介绍部分
Https://kafka.apache.org/documentation.html#introduction
特别是关于消费者的部分。在导言的倒数第二段中,它读到
卡夫卡在这方面做得更好。通过在主题中引入平行性(即划分)的概念,卡夫卡是 能够在使用者进程池中提供订单保证和负载平衡 通过将主题中的分区分配给使用者组中的使用者来实现 每个分区只被组中的一个消费者使用。通过这样做,我们确保 Consumer 是该分区的唯一读取器,并按顺序使用数据 这仍然平衡了许多使用者实例的负载 使用者实例多于分区。
我的困惑源于最后一句话,因为在作者描述了两个消费者组和一个4分区主题的段落正上方的图像中,消费者实例比分区多!
不能有比分区更多的使用者实例也是没有道理的,因为那样的话分区就会非常小,而且似乎为每个使用者实例创建新分区的开销会使卡夫卡陷入困境。我理解分区用于容错和减少任何一台服务器上的负载,但是上面的句子在一个分布式系统的上下文中是没有意义的,因为分布式系统应该能够同时处理成千上万的使用者。