«Лучшие предложения aviasales.ru, или как не упустить важное среди 150 миллионов билетов в сутки»
1. Лучшие предложения Aviasales.ru,
или как не упустить важное
среди 150 000 000 билетов в сутки.
Антон Щербаков, Senior Backend Developer, Aviasales.ru
4. Нагрузка
• 200 000 поисковых запросов в сутки.
• 250 запросов к MySQL в секунду, 300 запросов
к MongoDB в секунду.
• Исходящий трафик поискового движка –
25 Мбит.
• Десятки гигабайт json c билетами в сутки.
14. Рассылка минимальных цен
• Большие возможности пользовательской
настройки рассылки.
• Письма отправляются сразу после
нахождения цены.
• Ежедневно отправляется в среднем
35 тысяч писем.
15. Рассылка минимальных цен
• DomainKeys Identified Mail (DKIM).
• Sender Policy Framework (SPF).
• Дополнительные заголовки письма
(Precedence:bulk; X-List-Unsubscribe).
16. Задачи
• Упрощение логики получения информации о
минимальных ценах.
• Упрощение схемы актуализации данных.
• Вынесение отдельных сервисов в целях
повышения отказоустойчивости системы.
28. Схема добавления данных в
хранилище
1. Сбор информации о минимальных ценах.
2. Фильтрация.
3. Сохранение цен в хранилище.
4. Обновление соответствующих
упорядоченных наборов.
31. Нагрузка
• 3 000 000 минимальных цен в сутки.
• 2000 команд Redis в секунду.
• 700 000 запросов через API
минимальных цен в сутки.
32. Плюсы и минусы перехода
на Redis
Плюсы:
1. Упростилась схема работы с устаревшими
минимальными ценами.
2. Упростилась логика выборки данных,
необходимых для успешной работы сервисов.
3. Возросла производительность сервисов.
4. Упростилось решение задачи постраничной
отрисовки цен.
5. Отпала необходимость сортировки данных для
некоторых сервисов.
33. Плюсы и минусы перехода
на Redis
Минусы:
1. Значительные издержки потребления
оперативной памяти.
2. Риск потери данных при отключении физической
машины.