Фёдор Kолушев [email_address] Всеволод Потапов [email_address]
RLE и AdRiver 1997 Основание компании RLE 1999 Начало разработки AdRiver 2001 AdRiver online 2002 Перевод сети RLE на AdRiver 2003 AdMedia 2006 AdRiver стандарт де-факто 2007 to be continued
Постановка задачи
Обеспечить
> 100М показов в день
Аудиторные таргетинги
Real-time алгоритмы
Проблема
Выбрать баннер 1500 – 3000 в секунду!
20-30 тысяч рекламных кампаний
5-50 Сценариев в каждой кампании
> 200 тысяч баннеров
50M событий в базе посетителей (аудитория)
Принципиальная схема
Решения
Кластеры HPC для всех
Фрагментация данных
Репликация вычислений и данных
Оптимизация вычислений
Оптимизация доступа к данным
Фрагментация
Репликация вычислений
Репликация вычислений и данных
Синхронизация
Хранимые процедуры
Многие алгоритмы
не меняют данных
работают с большим объемом данных
Встраиваемые в DB вычисления позволяют существенно ускорить обработку
База Данных Фундамент для всех алгоритмов Объектно-ориентированная база данных: 1. Встроенная поддержка репликации 2. Фрагментации данных 3. Вычисления (аналог stored procedures) Недостатки: 1. Жесткая схема данных 2. Нет гарантий ссылочной целостности данных
Теоретические ограничения
Производительность растет нелинейно
Существует предел роста производительности
Ku – кол-во обновлений Kc – кол-во запросов n – количество компьютеров в группе
Масштабируемость AdRiver
Новые вызовы Появление 4-8 core и NUMA уже в обычных серверах Старые методы не масштабируются эффективно Модернизация существующего кода Проблема номер один затраты на синхронизацию
Препятствия быстрых вычислений 1. Копирование 2. Задержки при передаче данных 3. Блокировки
Синхронизация данных
Синхронизация данных
Доступ к общим данным Mutex / Multi read-write locks пока один работает, остальные блокированы Lock-free структуры данных Атомарные примитивы CAS и LL/SC
Unique users database Нагрузка 7000 запросов в секунду от 60+ потоков. Версия на Lock-free Hash tables обеспечивает среднее время ответа 50 микро секунд. А предыдущая версия на mutual exlusive locks...
Было и стало
AdRiver сегодня Более 250 000 000 запросов в сутки Нагрузка достигает 7000 запросов в секунду Среднее время обработки запроса 10 миллисекунд Кластер состоит из 30 серверов
AdRiver www.adriver.ru Фёдор Колушев e-mail: [email_address] Всеволод Потапов e-mail: [email_address]
0 comments
Post a comment