手动选择Apache Kafka主题分区副本的配置位置的方法
做法 (yà fǎ)
如果您想在Kafka创建主题时将分区和副本分配给特定的Kafka Broker,您可以在创建主题时指定replica-assignment选项。
$ ${KAFKA_HOME}/bin/kafka-topics.sh --create --topic replica-assignment-test --zookeeper localhost:2181 --replica-assignment 1:2,2:3
使用ID来指定要配置的Broker(如上例中的1和2)。
以上例子中,第一个分区的BrokerID是1和2,第二个分区的BrokerID是2和3。
换句话说,这个replica-assignment-test主题由2个分区组成,每个分区的副本数量为2。
当我确认时,发现它们已经被正确地布置好了。
$ ${KAFKA_HOME}/bin/kafka-topics.sh --describe --zookeeper localhost --topic replica-assignment-test
Topic:replica-assignment-test PartitionCount:2 ReplicationFactor:2 Configs:
Topic: replica-assignment-test Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: replica-assignment-test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3
顺便提一下,每个分区的副本中的Leader似乎是根据冒号前指定的内容来选择的。