@misterkust

Распределенная и/или многопоточная работа с сетью?

Доброго времени суток.
Никак не могу придумать решение для следующей задачи:
Есть, к примеру, 1 000 000 доменов.
Требуется многопоточно (а в идеале - еще и распределенно) получить главную страницу с каждого домена.
Проблема заключается в том, что при использовании самописных desktop-решений скорость упирается в DNS-сервера как провайдера, так и альтернативные.
Да и канал у среднестатистического провайдера домашнего интернета не способствует.
В какую сторону смотреть?
  • Вопрос задан
  • 2919 просмотров
Пригласить эксперта
Ответы на вопрос 4
begemot_sun
@begemot_sun
Программист в душе.
1. Использовать много разных DNS для ресолвинга имен.
2. Использовать многопоточный парсер, который будет создавать 100000 потоков для парсинга + 1000 для определения доменного имени + увязать это все одно целое. Как вариант использовать для этого дела Erlang ;)
Ответ написан
Не думаю что поставить кэширующий локальный DNS так сложно.
Ставить много разных DNS для резолвинга просто дурацкая идея...

В первую очередь для такой "многопоточной" загрузки страниц нужна ассинхронная обработка.
Идея в том что бы не вызывать 1 000 000 потоков на 1 000 000 доменов, всего лишь 8-16.
Я бы просто взял netty и не заморачивался бы...

Можно попробывать на С++ epoll() libcurl и pthread'ах завести, но можно и на Python Twisted.
В общем хватает барахла, главное это использование epoll() kqueue() ядерных поллеров, язык и библиотеки не имеют большего значения...
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Кеширующий DNS поможет в том, что он будет ходить за доменами прямо на авторитарные NS (те, на которые домен делегирован) - так что оно не будет упираться в чьи-то DNS серверы.. Само собой, никаких форвардеров в нём прописано быть не должно и он должен быть единственным в resolv.conf в системе. На убунте-дебиане оно "настраивается" так:
apt-get install bind9
Конфиг по умолчанию делает искомое. Останется только системе объяснить, что нужно использовать именно его. А отрезолвить тысяч 10 доменов за секунду в одно ядро он легко сможет.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Собственный DNS-сервер Unbound решит проблему с ресолвингом.

Главные страницы нужно выкачивать многопоточной асинхронной качалкой,
которая за пару дней пишется на любом популярном ЯП.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы