似乎Kafka只允许消费者从leader
代理(运行领导分区的代理)中提取消息。 followers
仅与leader
同步,消费者无法从followers
读取消息。
为什么不让消费者也从followers
中提取消息?
我认为如果消费者可以从followers
读取消息,我们可以通过负载平衡从所有代理服务器读取数据,整个系统的性能应该更好。比如说,leader
太忙了,leader
的带宽成了瓶颈。如果我们可以从followers
中提取消息,那么性能应该会更好。
答案 0 :(得分:3)
Kafka中没有领导经纪人只有领导者分区。主题由1个或多个分区组成。 Kafka代理有多个分区,其中一些是领导者,其中一些是来自群集中其他Kafka代理的分区的副本。这样每个代理都有一些活动分区,因此一个代理上的一个繁忙分区不会对剩余代理上其他分区的性能产生负面影响。
答案 1 :(得分:2)
@for_stack在使用kafka集群提高性能后,我达到了完全相同的要求。卡夫卡改进建议KIP-392似乎可以解决这个问题。
答案 2 :(得分:1)
@for_stack可能是这样的,因为生产者仅向分区领导者写入数据,以防万一,在提交消息之前,副本已丢失。那么在这种情况下,这显然意味着正在从副本中读取的使用者丢失了该消息,现在该消息必须从分区负责人中读取。
在这种情况下,它成为强制性的:-
1)。让消费者知道副本不同步。可以在使用者上添加此功能。
2)。从分区负责人那里读是很直接的,因为分区负责人本身也是同步副本,它也是最好的事实来源。