Лучшие предложения Aviasales.ru,или как не упустить важноесреди 150 000 000 билетов в сутки.Антон Щербаков, Senior Backend...
Поисковый движок
Технологии реализациипоискового движка•  Ruby, Ruby on Rails;•  NGINX with Passenger;•  HAProxy;•  MySQL, Redis, MongoDB;
Нагрузка•  200 000 поисковых запросов в сутки.•  250 запросов к MySQL в секунду, 300 запросовк MongoDB в секунду.•  Исходя...
Сервисы Aviasales.ru
Полный стек технологий
Дополнительные сервисыAviasales.ruAviasales.ru - поисковик дешевыхавиабилетов.
Календарь минимальных цен
Карта минимальных цен
Лучшие предложенияза последние 48 часов
Лучшие предложения запоследние 48 часов
Рассылка минимальных цен
Рассылка минимальных цен
Рассылка минимальных цен•  Большие возможности пользовательскойнастройки рассылки.•  Письма отправляются сразу посленахожд...
Рассылка минимальных цен•  DomainKeys Identified Mail (DKIM).•  Sender Policy Framework (SPF).•  Дополнительные заголовки п...
Задачи•  Упрощение логики получения информации оминимальных ценах.•  Упрощение схемы актуализации данных.•  Вынесение отде...
Внутренняя организация системыхранения минимальных ценRedis•  Богатая модель данных.•  Атомарные операции.•  Транзакции.
Сохранение минимальных ценSETEXkey: "economy:LED:BOJ:2013-06-01:2013-06-11:zero_weeks"value: "14612:1366179887:1666"expire...
Загрузка данных для календаряMGET"economy:LED:BOJ:2013-06-01:2013-06-11:zero_changes""economy:LED:BOJ:2013-06-01:2013-06-1...
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цен длясервиса лучших предложений
Загрузка минимальных цендля карты
Загрузка минимальных цендля карты
Схема добавления данных вхранилище1.  Сбор информации о минимальных ценах.2.  Фильтрация.3.  Сохранение цен в хранилище.4....
Схема добавления данных вхранилище
Схема добавления данных вхранилище
Нагрузка•  3 000 000 минимальных цен в сутки.•  2000 команд Redis в секунду.•  700 000 запросов через APIминимальных цен в...
Плюсы и минусы переходана RedisПлюсы:1.  Упростилась схема работы с устаревшимиминимальными ценами.2.  Упростилась логика ...
Плюсы и минусы переходана RedisМинусы:1.  Значительные издержки потребленияоперативной памяти.2.  Риск потери данных при о...
Выводы
Спасибо за внимание!
Upcoming SlideShare
Loading in …5
×

«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллионов билетов в сутки»

960 views
933 views

Published on

Антон Щербаков, Senior Backend Developer, Aviasales

Выступление на hpc4.itmozg.ru (25 апреля 2013, Санкт-Петербург)

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
960
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллионов билетов в сутки»

  1. 1. Лучшие предложения Aviasales.ru,или как не упустить важноесреди 150 000 000 билетов в сутки.Антон Щербаков, Senior Backend Developer, Aviasales.ru
  2. 2. Поисковый движок
  3. 3. Технологии реализациипоискового движка•  Ruby, Ruby on Rails;•  NGINX with Passenger;•  HAProxy;•  MySQL, Redis, MongoDB;
  4. 4. Нагрузка•  200 000 поисковых запросов в сутки.•  250 запросов к MySQL в секунду, 300 запросовк MongoDB в секунду.•  Исходящий трафик поискового движка –25 Мбит.•  Десятки гигабайт json c билетами в сутки.
  5. 5. Сервисы Aviasales.ru
  6. 6. Полный стек технологий
  7. 7. Дополнительные сервисыAviasales.ruAviasales.ru - поисковик дешевыхавиабилетов.
  8. 8. Календарь минимальных цен
  9. 9. Карта минимальных цен
  10. 10. Лучшие предложенияза последние 48 часов
  11. 11. Лучшие предложения запоследние 48 часов
  12. 12. Рассылка минимальных цен
  13. 13. Рассылка минимальных цен
  14. 14. Рассылка минимальных цен•  Большие возможности пользовательскойнастройки рассылки.•  Письма отправляются сразу посленахождения цены.•  Ежедневно отправляется в среднем35 тысяч писем.
  15. 15. Рассылка минимальных цен•  DomainKeys Identified Mail (DKIM).•  Sender Policy Framework (SPF).•  Дополнительные заголовки письма(Precedence:bulk; X-List-Unsubscribe).
  16. 16. Задачи•  Упрощение логики получения информации оминимальных ценах.•  Упрощение схемы актуализации данных.•  Вынесение отдельных сервисов в целяхповышения отказоустойчивости системы.
  17. 17. Внутренняя организация системыхранения минимальных ценRedis•  Богатая модель данных.•  Атомарные операции.•  Транзакции.
  18. 18. Сохранение минимальных ценSETEXkey: "economy:LED:BOJ:2013-06-01:2013-06-11:zero_weeks"value: "14612:1366179887:1666"expires_in: 172800SETEXkey: "economy:MOW:MCX:2013-05-02:2013-05-08:zero_week"value: "14050:1366179888:1534"expires_in: 86400
  19. 19. Загрузка данных для календаряMGET"economy:LED:BOJ:2013-06-01:2013-06-11:zero_changes""economy:LED:BOJ:2013-06-01:2013-06-11:one_change""economy:LED:BOJ:2013-06-01:2013-06-11:two_changes""economy:LED:BOJ:2013-06-01:2013-06-12:zero_changes""economy:LED:BOJ:2013-06-01:2013-06-12:one_change""economy:LED:BOJ:2013-06-01:2013-06-12:two_changes""economy:LED:BOJ:2013-06-01:2013-06-13:zero_changes""economy:LED:BOJ:2013-06-01:2013-06-13:one_change""economy:LED:BOJ:2013-06-01:2013-06-13:two_changes"…
  20. 20. Загрузка минимальных цен длясервиса лучших предложений
  21. 21. Загрузка минимальных цен длясервиса лучших предложений
  22. 22. Загрузка минимальных цен длясервиса лучших предложений
  23. 23. Загрузка минимальных цен длясервиса лучших предложений
  24. 24. Загрузка минимальных цен длясервиса лучших предложений
  25. 25. Загрузка минимальных цен длясервиса лучших предложений
  26. 26. Загрузка минимальных цендля карты
  27. 27. Загрузка минимальных цендля карты
  28. 28. Схема добавления данных вхранилище1.  Сбор информации о минимальных ценах.2.  Фильтрация.3.  Сохранение цен в хранилище.4.  Обновление соответствующихупорядоченных наборов.
  29. 29. Схема добавления данных вхранилище
  30. 30. Схема добавления данных вхранилище
  31. 31. Нагрузка•  3 000 000 минимальных цен в сутки.•  2000 команд Redis в секунду.•  700 000 запросов через APIминимальных цен в сутки.
  32. 32. Плюсы и минусы переходана RedisПлюсы:1.  Упростилась схема работы с устаревшимиминимальными ценами.2.  Упростилась логика выборки данных,необходимых для успешной работы сервисов.3.  Возросла производительность сервисов.4.  Упростилось решение задачи постраничнойотрисовки цен.5.  Отпала необходимость сортировки данных длянекоторых сервисов.
  33. 33. Плюсы и минусы переходана RedisМинусы:1.  Значительные издержки потребленияоперативной памяти.2.  Риск потери данных при отключении физическоймашины.
  34. 34. Выводы
  35. 35. Спасибо за внимание!

×