У нас есть проблемы с производительностью среди наших потребителей.Точнее, в ЧТО это делается с сообщениями.
Как правило, мы получаем файлы из 2000 строк, разбитых на 6000 событий Кафки.
В нашей теме X настроено 10 разделов.В этом случае мы можем запустить до 10 потребителей в одной данной группе, и каждый потребитель будет привязан к одному отдельному разделу до восстановления баланса.Просто отметим, что порядок сообщений в разделах является обязательным в нашем случае.
Проблема в том, что для обработки каждого сообщения потребителю может потребоваться до 6 секунд.Таким образом, весь файл обрабатывается примерно за 1 час.
Я также знаю, что Kafka был разработан для масштабируемости и что эта масштабируемость управляется количеством разделов в теме.
(Anочевидное решение заключается в рефакторинге кода потребителей. Это запланировано, но рабочая нагрузка нашей команды разработчиков такова, и этот рефакторинг может произойти не раньше, чем через несколько недель.)
Добавление новых разделов в темуЭто одно решение, но существующие сообщения не будут автоматически перераспределяться, и нам нужно будет написать KS-приложение (или другой процесс).Это также возможно.
Но мне интересно, могли бы мы представить себе другое решение, способ, позволяющий большему количеству работников получать больше сообщений параллельно?
И кроме того, кто-то может объяснить, почему использовалась стратегияв Кафке (то есть один потребитель давно подключен к выделенному разделу) - это правильное решение?
Я имею в виду, что мы могли бы представить другие решения с большим количеством потребителей, чем с разделами: потребитель получает сообщение, «отключается» от посредника, обрабатывает сообщение, и в течение этого времени другой потребитель может «подключиться» и получитьсообщение из этого же раздела "отключить", обработать сообщение, и третий потребитель может подключиться и ........ (Один из членов команды сказал: "Ху. Кафка не масштабируется. Мы не можем добавить больше потребителей"".)