我是Kafka,zookeeper和Storm的新手。 在我们的环境中,我们有一个Kafka经纪人连接到多个动物园管理员。生产者是否有利于将消息发送到特定主题并将一个经纪人的分区发送给多个动物园管理员,多个经纪人与多个动物园管理员?
答案 0 :(得分:0)
是的。 Kafka允许您通过添加经纪人进行扩展。当您将Kafka群集与单个代理一起使用时,所有分区都驻留在该单个代理上。但是当你有多个经纪人时,Kafka会在他们之间拆分分区。因此,经纪人A
可能会成为您主题的分区1
和2
以及分区B
的经纪人3
领导者的当选领导者。因此,当您向主题发布消息时,客户端将在两个代理的各个分区之间拆分消息。
请注意,我也提到过领导选举。将代理添加到Kafka集群可以进行复制。正如我在我的例子中提到的,Kafka使用ZooKeeper为每个分区选择一个领导者。一旦领导者被选举,客户端在分区之间分割消息并将每个消息发送给领导者以进行适当的分区。根据主题配置,领导者可以同步将消息复制到备份。因此,在我的示例中,如果主题的复制因子为2
,则代理A
将同步将分区1
和2
的邮件复制到代理B
和代理B
将同步将分区3
的邮件复制到代理A
。
所以,这就是说添加代理可以提供可伸缩性和容错性。