HighLoad++

Конференция разработчиков
высоконагруженных систем

Дизайн движка метапоиска Aviasales

Доклад принят в Программу конференции

- AviaSales - метапоисковик авиабилетов. Для обработки одного поискового запроса наш сервис опрашивает от одного до четырех десятков внешних сервисов и обрабатывает их ответы. Ответ одного сервиса - это от 200 до 2000 килобайт XML/JSON. От скорости обработки этих данных напрямую зависит прибыль компании.
- Для эффективной работы с API удалённых сервисов и быстрой параллельной обработки данных был разработан движок "Ясень".
Среди требований, предъявляемых к системе:
- высокая отказоустойчивость;
- лёгкая масштабируемость;
- "горячее" развертывание (deploy);
- простота конфигурирования;
- низкий порог вхождения для программистов

В рамках обработки одного поискового запроса необходимо отослать запросы и обработать результаты от большого набора внешних API, эти запросы необходимо выполнять параллельно. Кроме параллельного исполнения модулей, требуется последовательное исполнение. Часть обработки данных также можно осуществлять уже после отдачи данных пользователю - это отложенное исполнение. Из трёх названных конструкций (parallel/sequential/delayed) состоит DSL, используемый в "Ясене". Из независимых и изолированных модулей (юнитов) с помощью DSL строится workflow. Типичный workflow состоит из 10-100 юнитов, объединённых в последовательные, параллельные и отложенные цепочки.

Необходимость быстро реагировать на отзывы пользователей и показатели работы внешних сервисов влияет на требования к простоте конфигурирования системы. Такие вещи,как изменения наценки на билеты для разных поставщиков, регулирование набора агентств для поиска в зависимости от локали пользователя, источника траффика, географического положения пользователя и многих других факторов, необходимо делать в runtime и без помощи технических специалистов. Для решения этой проблемы workflow в "Ясене" строится из юнитов, каждый из которых имеет URL для получения текущей конфигурации юнита и её обновления. Для упрощения разработки юнитов и их тестирования кроме URL-конфигурирования каждый юнит может быть вызван через HTTP. В взаимодействие с юнитами происходит по HTTP, данные кодируем в json.

Требования к отказоустойчивости заставили нас пересмотреть способы работы с базами данных, применявшиеся ранее. Данные были разбиты на три типа:
- справочники - данные, которые постоянно читаются приложением, но довольно редко обновляются (информация об аэропортах, городах странах, авиакомпаниях);
- логи - данные, которые постоянно пишутся, но никогда не читаются из приложения (информация о поисковых запросах, кликах, поведении пользователей);
- динамика - данные с коротким временем жизни, которые активно пишутся и читаются (информация о поисках, переходах на сайты агентств).

Для разных типов данных были разработаны разные техники обеспечения отказоустойчивости.

Получившаяся система позволила сократить парк машин в три раза, упростила подключение новых сервисов и значительно повысила предсказуемость работы системы.

Золотой спонсор

  • Вadoo

Золотой спонсор

  • Percona

Игровой партнёр

  • WarGaming

Генеральный интернет-партнёр

  • Mail.Ru Group

Бронзовые спонсоры

  • Microsoft

Бронзовые спонсоры

  • Nutanix

Серебряный спонсор

  • http://www.google.com/

Серебряный спонсор

  • Webzilla

Travel-спонсор

  • Интернет Хостинг Центр

Технический партнёр

  • Филанко

HR-партнёр

  • SuperJob

HeadHunter-партнёр

  • HeadHunter

Партнёр по персоналу

  • http://www.rabota.ru/

Фри-ланс партнёр

  • http://www.free-lance.ru/

Информационная поддержка

  • Макхост
  • TRINET
  • Интуит
  • Нетология
  • Elama
  • Rusonyx
  • SpaceWeb
  • PС Мagazine
  • http://www.hse.ru/
  • ServerNews
  • Бизнес-школа RMA
  • http://e-personal.ru/
  • Учебный центр Luxoft Training
  • Webnames.ru
  • ExpoMap.ru
  • Русская школа управления
  • Internest
  • ООО «Юмисофт»
  • Финам
  • HackDay
  • SoftKey
  • GISMETEO / ГИСМЕТЕО
  • Agilecamp
  • ESET CLUB
  • Агава
  • Digitale
  • Блогун
  • CMS Magazine
  • Bugtraq.ru
  • Xakep.ru
  • http://www.samag.ru/
  • SQLInfo.ru
  • http://webew.ru/
  • HSE INC
  • timeofnewz
  • Moscow Business School
  • REG.RU
  • PeterHost
  • RUcenter
  • Хостинг-Центр
По любым вопросам обращайтесь:
Программный комитет :
Олег Бунин , +7 (916) 635-95-84
Бухгалтерия и вопросы оплаты :
, +7(495) 646-07-68
Организационный комитет :
Олег Бунин , +7 (916) 635-95-84

Почтовый адрес:
119180, Москва, Бродников пер., д. 7 стр. 1, +7(495) 646-07-68, ООО «Онтико»

Rambler's Top100
Рейтинг@Mail.ru