Kafka如何在经纪人之间分配主题分区

Vij*_*van 10 apache-kafka kafka-consumer-api

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

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

Gwe*_*ira 20

  • 当您创建新主题时,Kafka将分区和副本放置为首先使用具有最少数量的现有分区的代理,并且相同分区的副本位于不同的代理上.

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

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

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