Kafka-是否可以更改群集大小,同时使更改对生产者和消费者透明?

时间:2019-01-07 20:24:23

标签: apache-kafka

我正在调查Kafka,以评估其对我们用例的适用性。您能帮我了解一下Kafka在更改现有集群大小方面的灵活性吗?

我正在调查Kafka,以评估其对我们用例的适用性。您能否帮助我了解Kafka在不破坏群集的情况下向现有群集添加代理的灵活性如何?这样做时有什么需要照顾的吗?

2 个答案:

答案 0 :(得分:1)

  

将服务器添加到Kafka集群很容易,只需为其分配唯一的服务器即可   经纪人ID,并在新服务器上启动Kafka。但是这些新的   服务器不会自动分配任何数据分区,因此   除非将分区移动到它们,否则它们将不会做任何工作,直到   创建新主题。所以通常当您将计算机添加到您的   群集,您将需要将一些现有数据迁移到这些计算机。

引用here  Kafka支持:

  • 扩展集群
  • 自动将数据迁移到新计算机上
  • 自定义分区分配和迁移

答案 1 :(得分:0)

是的,您可以使用命令行或AdminClient来增加主题的分区数,而无需重新启动集群进程。

示例:

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic testtopic1 
   --partitions 20 

请注意,更改分区不会更改现有主题的分区。

Kafka仅允许增加分区,但不能减少分区。如果万一需要减少分区,则需要删除并重新创建主题。

针对您的问题“ 生产者/消费者对新添加的分区的行为

Kafka为生产者和消费者提供属性metadata.max.age.ms,默认为300000。

metadata.max.age.ms:以毫秒为单位的时间段,在此之后,即使我们没有看到任何分区领导更改也可以主动刷新任何新的代理或分区,我们还是强制刷新元数据

在给定值之后,元数据将更新,生产者/消费者将检测到任何新添加的分区。