Как выбрать worker по числу выполняемых задач

Сначала исключите недоступные и заполненные workers, затем сравните нагрузку и атомарно зарезервируйте слот. Раздельные чтение счётчика и увеличение создают гонку.

Короткий ответ

Что ответить на собеседовании

Сначала исключите недоступные и заполненные workers, затем сравните нагрузку и атомарно зарезервируйте слот. Раздельные чтение счётчика и увеличение создают гонку.

Подробный разбор

Ответ с пояснениями

Условие

Есть workers с флагом healthy, лимитом capacity и счётчиком inflight. Требуется выбирать доступного worker с наименьшей нагрузкой. Как избежать одновременного переполнения выбранного узла?

Ответ

Сначала исключите недоступные и заполненные workers, затем сравните нагрузку и атомарно зарезервируйте слот. Раздельные чтение счётчика и увеличение создают гонку.

При равном числе задач можно использовать round-robin или случайный выбор. Если мощности различаются, сравнивайте inflight/capacity, а не только абсолютное число. После завершения или отказа резерв возвращается ровно один раз. Когда доступных узлов нет, нужна определённая политика очереди или отказа, а не бесконечный поиск.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее