@misterkust

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

Доброго времени суток.
Никак не могу придумать решение для следующей задачи:
Есть, к примеру, 1 000 000 доменов.
Требуется многопоточно (а в идеале - еще и распределенно) получить главную страницу с каждого домена.
Проблема заключается в том, что при использовании самописных desktop-решений скорость упирается в DNS-сервера как провайдера, так и альтернативные.
Да и канал у среднестатистического провайдера домашнего интернета не способствует.
В какую сторону смотреть?
  • Вопрос задан
  • 2917 просмотров
Пригласить эксперта
Ответы на вопрос 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 решит проблему с ресолвингом.

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

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

Войти через центр авторизации
Похожие вопросы