Рейтинг@Mail.ru

Как мы качаем 60 миллионов страниц в день из Веба: эволюция архитектуры, факапыАрхитектуры, масштабируемость

Доклад принят в программу конференции
Александр Сибиряков
Scrapinghub

Архитектор систем распределенной обработки больших объемов данных, высоконагруженных систем.

Тезисы

В этом докладе я расскажу о том, как мы построили контент-систему для поисковой машины одного из наших клиентов. Их задачей было обойти 14М доменов, скачать с каждого не более 100 разных страниц в течение месяца и осуществить пере-обход в следующих месяцах. Система должна быть вежливой по отношению к веб-сайтам, не перегружать чрезмерным RPS и уважать robots.txt. При этом расходы на железо и обслуживание системы должны быть минимальными, а производительность высокой: минимум 600 страниц в секунду.

Таким образом, нам нужно было реализовать робота, который может скачать robots.txt, sitemap, распарсить, обнаружить и запланировать не более 100 уникальных ссылок с каждого хоста и сделать это для нескольких тысяч доменов параллельно. При этом нам нужно было учитывать количество запросов, которое мы отправляем каждому хосту в единицу времени, и делать задержки.

Скажу, что получилось сделать систему, которая может масштабироваться во время обхода без необходимости начинать обход сначала. Все это работает под управлением Marathon и управляется через Slack-бота. На текущий момент робот эксплуатируется уже 1,5 года.

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

Наш стек: Apache HBase, Kafka, Mesos/Marathon, Frontera/Scrapy Python frameworks.

Python
,
Поисковые системы
,
Распределенные системы
,
Архитектура данных, потоки данных, версионирование
,
Hadoop

Другие доклады секции Архитектуры, масштабируемость

Rambler's Top100