我是Kafka的新手,动物园管理员和Storm。我我们的环境,我们有一个Kafka代理连接到多个动物园管理员。让生产者将消息发送到特定主题并在一个代理上将分区到多个动物园管理员与多个代理分配给多个动物园管理员相比是否有优势?
是的。Kafka允许您通过添加代理来扩展。当您将Kafka集群与单个代理一起使用时,就像您所做的那样,所有分区都驻留在该代理上。但是当您有多个代理时,Kafka将在它们之间拆分分区。因此,代理A
可以当选为您主题的分区1
和2
的领导者,而代理B
分区3
的领导者。因此,当您向主题发布消息时,客户端将在两个代理上的各个分区之间拆分消息。
注意,我还提到了领导人选举。在Kafka集群中添加代理可以实现复制。Kafka使用ZooKeeper为每个分区选择一个领导者,正如我在示例中提到的那样。一旦选择了一个领导者,客户机就在分区之间拆分消息,并将每个消息发送给相应分区的领导者。根据主题配置,领导者可以将消息同步复制到备份。因此,在我的示例中,如果主题的复制因子是2
,那么代理A
将同步将分区1
和2
的消息复制到代理B
中,而代理3
会同步将分区3
中的消息复制给代理
1
。
所以,这就是说,添加代理给了您可伸缩性和容错性。
Kafka初学者和融合包。我想启动多个代理,以便了解主题。可以通过此设置完成- 此设置可以在服务器配置文件中定义,也可以在脚本中定义。 但是我该如何运行它们呢?。如果我只是向引导服务器添加多个endpoint,就会出现以下错误: Java . lang . illegalargumentexception:要求失败:每个侦听器必须有不同的名称,listeners: PLAINTEXT://:909
我正在尝试使用Java API运行zookeeper,以便能够使用多个分区启动一个主题。我相信这个答案会奏效。但是,当我尝试运行此代码时,会出现以下错误: 无法连接到动物园管理员服务器localhost:2181超时8000毫秒 在这台机器上,我没有运行zookeeper服务器。但我想在Java中启动一个实例(目前我可以使用ZooKeeperServerMain()类来完成)。因此,也许我也需要这
在Flink中,我执行以下代码: 我推出3次同样的工作。 如果我用一个代理执行这段代码,它工作得很好,但是用3个broke(在3个不同的机器上)只读取一个分区。 null
假设我有 3 台 Kafka 服务器。服务器 1 zoopkeeper1 服务器 2 zoopkeeper2 服务器 3 zoopkeeper3 在集群配置中,zoopkeepers 会发生什么?它们是为每个服务器单独维护的,还是会在群集配置中同步其数据?
在Zookeeper和代理身份验证上启用SASL时,我面临以下错误。 以下配置在JAAS文件中给出,该文件作为KAFKA_OPTS传递,将其作为JVM参数:- Kafka经纪人的服务器。属性设置了以下额外字段:- Zookeeper属性如下所示: