Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Frontera - это платформа веб-сканирования с открытым исходным кодом , реализующая компонент границы обхода и предоставляющая примитивы масштабируемости для приложений веб-сканеров.

Обзор [ править ]

Содержание и структура Всемирной паутины быстро меняются. Frontera спроектирована так, чтобы иметь возможность быстро адаптироваться к этим изменениям. Большинство крупномасштабных поисковых роботов работают в пакетном режиме с последовательными фазами внедрения, выборки, анализа, дедупликации и планирования. Это приводит к задержке обновления сканирования при изменении Интернета. Дизайн в основном мотивирован относительно низкой производительностью произвольного доступа жестких дисков по сравнению с последовательным доступом. Вместо этого Frontera полагается на современные системы хранения ключевых значений , используя эффективные структуры данных и мощное оборудование для одновременного сканирования, анализа и планирования индексации новых ссылок. Это проект с открытым исходным кодом, разработанный для различных сценариев использования, с высокой гибкостью и настраиваемостью.

Единственная цель Frontera - крупномасштабное сканирование веб-сайтов. Его гибкость позволяет выполнять обходы умеренного размера на одной машине с несколькими ядрами, используя режимы запуска одного процесса и распределенных пауков.

Особенности [ править ]

Frontera написана в основном на Python . Транспорт и форматы данных хорошо абстрагированы, а готовые реализации включают поддержку MessagePack , JSON , Kafka и ZeroMQ .

  • Работа в режиме онлайн: небольшие пакеты запросов, парсинг выполняется сразу после получения.
  • Подключаемая внутренняя архитектура: логика низкоуровневого хранилища отделена от политики сканирования.
  • Три режима запуска: одиночный процесс, распределенные пауки, распределенные бэкэнд и пауки.
  • Прозрачный поток данных, позволяющий легко интегрировать пользовательские компоненты.
  • Абстракция шины сообщений, позволяющая реализовать собственный транспорт (ZeroMQ и Kafka доступны из коробки).
  • Бэкэнды хранилища SQLAlchemy и HBase .
  • Пересмотр логики (только с бэкэндом СУБД).
  • Необязательное использование Scrapy для извлечения и анализа.
  • Лицензия BSD с тремя пунктами , позволяющая использовать в любом коммерческом продукте.
  • Поддержка Python 3.

Сравнение с другими поисковыми роботами [ править ]

Хотя Frontera сам по себе не является поисковым роботом, для него требуется архитектура потокового сканирования, а не пакетный подход. [ необходима цитата ]

StormCrawler - еще один ориентированный на поток краулер, построенный на основе Apache Storm , с использованием некоторых компонентов из экосистемы Apache Nutch. Кластер Scrapy был разработан ISTResearch с учетом точного мониторинга и управления очередью. Эти системы обеспечивают механизмы выборки и / или постановки в очередь, но не содержат базы данных ссылок или обработки контента.

Боевые испытания [ править ]

В Scrapinghub Ltd. есть сканер, обрабатывающий 1600 запросов в секунду на пике, построенный с использованием в основном Frontera, использующего Kafka в качестве шины сообщений и HBase в качестве хранилища состояний ссылок и базы данных ссылок. Такой краулер работает циклично, каждый цикл занимает 1,5 месяца и в результате получается 1,7 млрд загруженных страниц. [2]

Сканирование испанского Интернета привело к появлению 46,5 млн страниц за 1,5 месяца в кластере AWS с двумя компьютерами-пауками. [3]

История [ править ]

Первая версия Frontera работала в едином процессе, как часть настраиваемого планировщика для Scrapy , используя базу данных SQLite на диске для хранения состояний ссылок и очереди. Он мог ползать несколько дней. Достигнув некоторого заметного количества ссылок, он стал тратить все больше и больше времени на запросы SELECT, что сделало сканирование неэффективным. На этот раз Frontera разрабатывается в рамках программы Memex DARPA и включена в его каталог проектов с открытым исходным кодом. [4]

В 2015 году последующие версии Frontera использовали HBase для хранения базы данных ссылок и очереди. Приложение было распределено на две части: бэкэнд и сборщик. Бэкэнд отвечал за связь с HBase с помощью Kafka, а сборщик только читал тему Kafka с URL-адресами для сканирования и выдавал результаты сканирования в другую тему, используемую бэкэндом, создавая замкнутый цикл. В это время был реализован прототип очереди первого приоритета, пригодный для сканирования в веб-масштабе. Очередь создавала пакеты с ограничениями на количество хостов и запросов на хост.

Следующей важной вехой в развитии Frontera стало внедрение стратегии сканирования и работника стратегии наряду с абстракцией шины сообщений. Стало возможным программировать настраиваемую стратегию сканирования, не имея дело с низкоуровневым внутренним кодом, работающим с очередью. Простой способ сказать, какие ссылки должны быть запланированы, когда и с каким приоритетом, сделал Frontera действительно пограничным фреймворком для сканирования. Kafka был довольно тяжелым требованием для небольших поисковых роботов, а абстракция шины сообщений позволяла интегрировать практически любую систему обмена сообщениями с Frontera.

См. Также [ править ]

  • Документация Frontera на ReadTheDocs.

Ссылки [ править ]

  1. ^ "Выпуски · Scrapinghub / frontera" . github.com . Проверено 7 апреля 2021 .
  2. Сибиряков, Александр (29 марта 2017 г.). "Frontera: архитектура фреймворка для обхода веба и текущие проблемы" . Хабрахабр .
  3. Сибиряков, Александр (15 октября 2015 г.). "frontera-open-source-large-scale-web-crawling-framework" . Speakerdeck .
  4. ^ «Открытый каталог, Memex (поиск по домену)» .