2. Общая архитектура системы
Балансировщик
нагрузки Балансировщик нагрузки
Merchant
….
Баннер сервера
Портал
Affiliate
База
Сервер обработки
данных
статистики
2
3. Размеры рекламной сети
• Более 200 000 рекламных площадок
• Более 20 000 рекламодателей
• Более 450 000 000 регистрируемых событий
ежедневно
3
4. Нагрузка на систему
• 15 000 запросов к баннерным машинам в секунду
• Около 500 запросов к порталу в секунду
4
5. ок
100 000 000
200 000 000
300 000 000
400 000 000
500 000 000
600 000 000
700 000 000
0
т.
0
ян 3
в.
0
ап 4
р.
ию 0 4
л.
0
ок 4
т.
0
ян 4
в.
0
ап 5
р.
ию 0 5
л.
0
ок 5
т.
0
ян 5
в.
0
ап 6
р.
0
ию 6
л.
0
ок 6
т.
0
ян 6
в.
0
ап 7
р.
ию 0 7
л.
0
ок 7
т.
0
ян 7
в.
08
Число регистрируемых событий
5
6. • Распределение нагрузки
– Балансирвка запросов с помощью аппаратного LB
• Повышение отказоустойчивости
– Взаимозаменяемость баннерных машин
– Дублирование ключевых компонентов системы
6
7. Особенности бизнес модели
• Качество сервиса определяется количеством
участников
• Отсутствует комиссия за показы
• Площадки заинтересованы в эффективном
размещении
• Вовлёченность в процесс
7
9. ок
т.
0
0%
20%
40%
60%
80%
ян 3
в. 100%
0
ап 4
р.
ию 04
л.
0
ок 4
т.
0
ян 4
в.
0
ап 5
р.
ию 05
л.
0
ок 5
т.
0
ян 5
в.
0
ап 6
р.
ию 06
л.
0
ок 6
т.
0
ян 6
в.
0
ап 7
р.
ию 07
л.
0
ок 7
т.
0
ян 7
в.
08
Клики
Транзакции
Комиссия за клики и транзакции
9
10. Основные проблемы
• Очень много данных
• Очень мало времени на обработку
• Система должна работать непрерывно
10
12. Способы ускорения обработки
• Ускорение загрузки там, где это возможно
• Задачи не должны блокировать друг друга
• Запуск процессов по расписанию
• Взаимосвязанность задач – это хорошо
12
13. Этапы обработки статистики
• Загрузка логов с баннерных серверов
• Предварительная группировка данных
• Проверка кликов
• Загрузка данных в БД
• Расчет статистики
13
14. Проблемы базы данных
• Гигантский объем таблиц с показами и
кликами
• Необходимо блокировать загрузку на время
расчета статистики
14
16. Денормализация данных
Stats_stg
Рекламные Рекламные
кампании места
Площадки Рекламодатели
Баннеры Баннеры
Статистика для Статистика для
рекламодателей владельцев
рекламных площадок
16
17. Отображение статистики
Кэш приложения
Merchant
Front End
База
данных
Affiliate
Web Сервер
17
18. Почему мы кэшируем данные
• Запросы часто повторяются
• Статистика обновляется по расписанию. Если
нет новых данных, зачем обращатся к БД?
• Сортировка средствами БД работает медленнее
18
19. Контроль работоспособности
• Остановка системы приводит к лавинообразному
накоплению необработанной информации
• Клиенты хотят видеть свои данные
• Обработка статистики используется для биллинга
19
20. Основные индикаторы
• Число необработанных файлов на сервере
• Задержка загрузки файлов с баннер сервера
• Задержка обработки статистики
20
21. Что мы контролируем
• Баннерные сервера
• Сервер обработки статистики
• База данных
21
22. Как мы контролируем
• Готовые решения для контроля на аппаратном
уровне (Nagios)
• Собственные разработки для контроля на уровне
приложения
22
23. Как защититься от сбоев
• Раньше знаешь, больше спишь
• Проблему нужно предвидеть
• С проблемой нужно научиться бороться
23