При увеличения количество коньсюмеров, для распределения нагрузки необходимо увеличивать количество партиций в топике.
Apache Kafka – это распределённая и легко масштабируемая система обмена сообщениями с высокой пропускной способностью, которая может в реальном времени обрабатывать любые объемы данных.
На горячую количество партиций можно только увеличить, для уменьшения необходимо пересоздать топик.
Для увеличения количества партиций, переходим в директорию где у нас установлена Kafka
1 | ./bin/kafka-topics.sh --alter --zookeeper <zookeeper_ip>:2181 --partitions <count> --topic <topic_name> |
Где:
- zookeeper_ip - IP адрес сервера zookeeper, для лкоальной установки localhost
- count - количество партиций
- topic_name - имя топика
к примеру
1 | ./bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic test |
Для последней версии Kafka (к примеру 3.8) команда немного отличается.
1 | bin/kafka-topics.sh --bootstrap-server <broker:port> --topic <topic-name> --alter --partitions <number> |
Где
- <broker:port> - IP адрес и порт Kafka
- <topic-name> - Имя топика
- <number> - количество партиций
К примеру
1 | bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --topic test --alter --partitions 2 |
Сообщение "The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)" - можно игнорировать, необходимое количество партиций все равно устанавливается.