Если входных URL будет очень много, например миллион, какие проблемы возникнут и как их решить?

При миллионе URL нельзя создавать миллион одновременных задач и держать все ответы в памяти. Нужны потоковый ввод, ограниченная очередь и фиксированный пул обработчиков.

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

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

При миллионе URL нельзя создавать миллион одновременных задач и держать все ответы в памяти. Нужны потоковый ввод, ограниченная очередь и фиксированный пул обработчиков.

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

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

При миллионе URL нельзя создавать миллион одновременных задач и держать все ответы в памяти. Нужны потоковый ввод, ограниченная очередь и фиксированный пул обработчиков.

Ограничивайте общее число соединений и нагрузку на каждый домен, используйте timeouts, лимиты размера ответа и ограниченные повторы. Результаты сохраняйте постепенно, с checkpoint и дедупликацией для возобновления.

Один semaphore вокруг миллиона заранее созданных Task всё равно оставляет расход памяти на сами задачи. Для пользовательских URL проверяйте SSRF, редиректы и допустимые назначения. Учитывайте ограничения источника и backpressure хранилища: ускорение скачивания бесполезно, если запись результатов отстаёт.

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

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

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

Подробнее