Некоторые разделы, кажется, имеют приоритет, когда потребитель читает из нескольких разделов

У меня есть сервис, который читает тему Кафки, используя librdkafka. Я заметил, что если потребитель отключается на некоторое время, некоторые записи в журнале создаются в kafka (это вполне нормально и ожидаемо)

Странно то, что иногда, когда я запускаю резервное копирование потребителя и просматриваю ожидающие записи журнала по разделам, разделы, назначенные одному и тому же потребителю, восстанавливаются с разной скоростью.

Например, скажем, у меня есть потребитель X, и он требует разделы с 30 по 50. Когда потребитель начинает работу, на каждом из них ожидают 10000 записей.

То, что я вижу, это ожидающие входы для 30-40 тренда вниз, в то время как ожидающие входы для 41-50 растут. Когда 30-40, наконец, достигает нуля (или становится достаточно близко к нулю), 41-50 начинает движение вниз.

Почему это происходит? Это функция клиента или функция сервера?

1 ответ

Кафка работает так, что потребитель будет продолжать переключаться между разделами для получения данных, однако Kafka разумно обеспечивает переключение и обработку только тех многочисленных разделов, которые он может обрабатывать, основываясь на возможностях вашего потребителя, т.е. если бы ваш потребитель был более мощным (производительность сервера) это займет немного больше разделов, но не говоря уже о том, что остальные разделы займут второй шаг после завершения работы с первыми. В итоге: если вы создаете X-разделы, вы ожидаете, что они пройдут все по одному перед повторным посещением первого, но это снизит производительность за счет больших усилий при переключении. В вашем случае я понимаю, что, поскольку в других разделах также есть бизнес-данные, вы не хотите сильно их задерживать, поэтому я предлагаю сократить количество разделов.

Другие вопросы по тегам