Apache kafka MSK Kafka:请解释为什么ZookeeperConnectString列出了多个端点,以及我应该如何使用它们

Apache kafka MSK Kafka:请解释为什么ZookeeperConnectString列出了多个端点,以及我应该如何使用它们,apache-kafka,apache-zookeeper,aws-msk,Apache Kafka,Apache Zookeeper,Aws Msk,如果运行以下aws命令,将获得msk kafka群集详细信息: aws kafka list-clusters 这将返回如下内容: { "ClusterInfoList": [ { "BrokerNodeGroupInfo": { ...}, "ClusterArn": "arn:aws:kafka:us-west-2:000000000000000:c

如果运行以下aws命令,将获得msk kafka群集详细信息:

aws kafka list-clusters
这将返回如下内容:

{
    "ClusterInfoList": [
        {
            "BrokerNodeGroupInfo": { ...},
            "ClusterArn": "arn:aws:kafka:us-west-2:000000000000000:cluster/my-cluster/{guid}",
            "ClusterName": "my-cluster",
            "ZookeeperConnectString": "z-1.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com:2181,z-3.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com,z-3.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com"
        }
    ]
}

请注意ZookeperConnectString是一个逗号分隔的字符串

它真的是zookeeper(我认为zookeeper的全部目的是用一个端点协调代理)还是代理列表?这就是我所怀疑的。 此外,当我在
-zoookeeper
命令中使用此选项创建主题或生成主题时,如果我只使用其中一个端点,则其效果相同

我可以在应用程序中只使用一个端点吗?或者我应该在我的producer配置中使用这三个选项。若然,原因为何?仅使用其中一种会产生什么影响?

  • 这些不是代理,而是不同的zookeeper服务器,它们构成了Kafka集群的代理

  • 您可以只使用其中一个,但这意味着必须运行特定的zookeeper才能使命令成功

  • 为了在客户端启动时实现高可用性和容错性,您应该使用所有这些选项,以避免您刚才在配置上设置的zookeeper停止(而其他选项仍在运行)的情况

    设置所有这些选项可以保证(如果仲裁正常)kafka命令将成功执行,即使某些zookeeper服务器不活动


为了获得可靠的ZooKeeper服务,您应该在 被称为集合的星团。与大多数合奏者一样长 启动后,服务将可用。因为动物园管理员需要一个 大多数情况下,最好使用奇数台机器。例如 有了四台机器,动物园管理员只能处理一台机器的故障 机器;如果两台机器出现故障,其余两台机器不会出现故障 占多数。然而,有了五台机器,动物园管理员就可以 处理两台机器的故障