Kafka 如何在代理之间分配主题分区

Posted

技术标签:

【中文标题】Kafka 如何在代理之间分配主题分区【英文标题】:How Kafka distributes the topic partitions among the brokers 【发布时间】:2015-11-30 07:26:27 【问题描述】:

我在 3 个不同的 VM 中有 3 个 Kafka 代理,其中一个还运行 Zookeeper。我现在创建一个包含 8 个分区的主题。生产者将消息推送到创建的“主题”上的这些代理组。

Kafka 如何在代理之间分配主题及其分区? 当新的 Kafka Broker 加入集群时,Kafka 是否会重新分配主题? 主题创建后可以增加主题分区吗?

【问题讨论】:

【参考方案1】:

当您创建新主题时,Kafka 会以现有分区数量最少的代理优先使用的方式放置分区和副本,并且相同分区的副本位于不同的代理上。

当您添加新代理时,它将用于新分区(因为它的现有分区数量最少),但不会自动将现有分区平衡到新代理。您可以使用副本重新分配工具将分区和副本移动到新代理。

是的,您可以将分区添加到现有主题。

【讨论】:

一个准确的答案!感谢那。生产者是否需要知道分区存在哪个代理并将消息推送给他们?当生产者正在推送消息时,当代理出现故障时会发生什么?基本上,生产者如何看待巨大 Kafka 集群中的分区? 当生产者首次连接到集群时(通过 broker.list 参数中的代理),它会发出元数据请求,其中包含您要发布到的主题,并且代理会回复哪个代理拥有哪个划分。如果 broker 宕机,producer 会检测到失败的连接(通常通过 tcp 超时),并重新发出元数据请求以查找新的 leader。

以上是关于Kafka 如何在代理之间分配主题分区的主要内容,如果未能解决你的问题,请参考以下文章

Kafka集群管理工具kafka-manager安装使用

Jet Kafka负载平衡

Kafka集群管理工具kafka-manager的安装使用

Kafka集群管理工具kafka-manager的安装使用

Kafka集群监控安全机制与最佳实践

Kafka-分区分配规则