Я создаю новый сервис, который станет потребителем темы Kafka.Это приложение Spring, поэтому я использую spring-kafka.
В теме 20 разделов.В начале в Куберне есть два случая.В будущем, в зависимости от нагрузки, мы хотим масштабировать и запускать дополнительные экземпляры.Какое должно быть подходящее значение kafka.consumer.concurrency
в моем случае?Бьюсь об заклад, что 10, но я прав?
Когда есть только два экземпляра службы, каждый запускает 10 потоков, и каждый поток читает из одного раздела.Но что, если я хотел бы масштабировать сервис?Что произойдет, если я запустлю два дополнительных экземпляра?Насколько я знаю, когда новый потребитель присоединяется к группе потребителей, группа потребителей пытается «перебалансировать» нагрузку, чтобы назначить разделы каждому потребителю.
- Означает ли это, что два существующих экземпляра уменьшат количество потоков до 5 и будут прослушивать только 5 разделов (и каждый экземпляр будет обрабатывать 5 разделов)?
- Правильно ли моё понимание?
- Если нет, какое значение должно быть в моем случае?
Документация гласит:
если у вас больше разделов, чем потоков, некоторые потоки будут получать данные из нескольких разделов
Просто чтобы убедиться: если я установлю параллелизм, например, на 5, каждый поток будет читать из двух разделов.Повлияет ли это на производительность сервиса?