【发布时间】:2020-05-26 04:56:54
【问题描述】:
我已经阅读了很多关于 Kafka 架构的文章,但我在这方面仍然是全新的,在编码方面,如果我正确理解了这些内容,就会出现一些混乱。
据我了解,Kafka 服务器、代理和节点是同义词。 Kafka 集群中可以有一些代理。有一个 Kafka 主题 (T1),它由几个分区 (P1, P2..) 组成。这些分区可以跨代理(B1、B2..)复制。 B1 可以是 P1 的领导者,B2 可以是 P2 的领导者,依此类推。我们是否说为代理或集群定义了主题 T1,如果我们将主题视为一组分区,我们可以说“主题副本”吗?
来自 Kafka 官方文档:
bootstrap.servers:用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导——此列表仅影响用于发现完整服务器集的初始主机。此列表应采用 host1:port1,host2:port2,.... 的形式。由于这些服务器仅用于初始连接以发现完整的集群成员(可能会动态更改),因此此列表不需要包含完整集服务器数量(不过,您可能需要多个服务器,以防服务器停机)。
所以据我了解,定义 host1:port1,host2:port2 表示有两个代理。
在这种情况下,ZooKeeper 在执行bin/kafka-console-producer.sh --broker-list host1:port1,host2:port2 --topic test 时是否会自动将消息分发给领导者? (我相信在某处我读到过生产者应该从 ZooKeeper 读取代理 ID,但这里不是没有必要吗?)
是否等于使用 bin/kafka-console-producer.sh --zookeeper host1:z_port1,host2:z_port2 --topic test 发布?
我应该如何基本理解bin/kafka-configs.sh --zookeeper host1:z_port1,host2:z_port2?我们只有一个 zookeeper 实例?
【问题讨论】:
标签: apache-kafka apache-zookeeper