Многопоточность и сетевые технологии

28 дек 2016
  • Данная информация может быть интересна исключительно программистам как обоснование высокой производительности и эффективности парсера

    A-Parser создавался при использовании следующих технологий:
    • Асинхронный ввод/вывод - позволяет одновременно поддерживать тысячи соеденений(libev, epoll & select)
    • Легкие "зеленые" потоки(coro, anyevent)
    • Собственный производительный HTTP/Socket клиент с поддержкой HTTP/1.1, HTTPS, проксей HTTP и SOCKS5 с поддержкой авторизацией
    • SQLite и LevelDB в качестве производительных хранилищ
    • Отсутствие графического интерфейса - A-Parser выполнен по клиент-серверной технологии
      • Клиент представляет собой веб-приложение(sencha) и отвечает за настройку и управление парсером
      • Сервер занимается исключительно парсингом и обработкой информации
    • JavaScript движок V8 для обхода JS защит, а также для написания JavaScript парсеров
    • Template Toolkit в качестве основного шаблонизатора
    • UTF-8 в запросах и результатах

    A-Parser распараллеливает все важные операции:
    • Каждое задание(набор запросов) парсится в указанное число потоков
    • При использовании нескольких парсеров в одном задании каждый запрос к разным парсерам выполняется в разных потоках одновременно
    • Парсер умеет запускать несколько заданий параллельно
    • Проверка и загрузка прокси с источников также проходит в многопоточном режиме