с 64 партициями, встал на начало, запустил 24 консьюмера с одной consumer group. Прошло 5+ дней, в среднем обработал 70-80%, частью партиций догнала хвост (lag=0), но минорная часть косньюмеров полностью остановилась. Перезапускаешь консьюмер, он не потребляет.
Я правильно понимаю, что внутри ребаланса консьюмеров нет прямо идеальной логики, что кафка будет раскидывать только "необработанные" партиции и забивать на уже "обработанные" (lag=0)? В топик никто не пишет, это однократный статичный файл. То есть в конце, добавленный консьюмер с большой вероятностью назначается на обработанные партции? И только совсем в ручном режиме можно самому как-то раскидать остатки?
Кафка же не знает пишет кто-то в топик или нет. Топик разбит на 64 партиции, которые распределяются по 24-м консьюмерам, скорее всего 16 коньсюмеров получают по 3 партиции и оставшиеся 8 по 2. Логично предположить что эти 8 консьюмеров и останавливаются. By default в кафке два варианта partition.assignment.strategy Range и RoundRobin. Ни в том ни в другом случае перезапуск консьюмера не поможет загрузить его «необработанными» партициями. При выключении консьюмера «обработанная» партиция уезжает к другому консьюмеру, но не нагружает его дополнительно, а при включении консьюмера партиция снова приезжает к нему, но обрабатывать там уже нечего и консьюмер продолжает стоять. Нужно было делать либо 48 партиций, либо 32 консьюмера для равномерности.
Обсуждают сегодня