Масштабирование системы баннерной рекламы с централизованной базой данных Сергей Нековаль Компания «Грамант» Что масштабируем? • Японская система баннерной рекламы более 450 млн. показов в сутки Система на базе DART Enterprise более 50 млн. показов в сутки Что рассказываем? • Эволюционное развитие архитектуры системы или Как мы докатились до такой жизни • Выгоды и проблемы централизации данных • Capacity Planning и риски Бизнес-модель Пользователи Агенство Affiliate Владелец рекламной площадки Merchant Рекламодатель Начало пути Oracle • СУБД Oracle • Веб-сервер Веб-сервер Портал Баннер-сервер Проблемы • Нагрузка на баннер-сервер многократно превышает нагрузку на Портал • Что будет, если баннер-сервер сломается? теряем деньги! Вариант 2 Баннер-сервер banner01 Баннер-сервер Oracle banner02 Баннер-сервер Портал banner03 Сервер портала Load Balancer Преимущества • Балансировка загрузки • Отказоустойчивость баннер-серверов • Возможность независимого обновления баннер-серверов Проблемы • Мы балансируем загрузку CPU!? • BLOBs за сутки События • Impression (Показ) • ClickThrough (Клик) • Sale (Продажа) 450 млн. 1,5 млн. 35 тыс. Исходящие данные BCG_FLIGHT Ad Network Flight-файлы 10 млн. связей 200 тыс. сайтов Бизнесправила 5 млн. строк HTML-код, ссылки BCG_CREATIVE 300 тыс. cтрок Banner-файлы JPG, PNG, GIF, SWF, HTML,TXT Oracle • Генерируем «свернутое» представление баннеров (BCG_*) • Создаем файловую структуру Игнорируем... • Задержку данных (20 мин) • Случайную рассогласованность данных между серверами Альтернативы • Проксирование баннеров • Content Delivery Networks (Akamai и т.п.) Входящие данные Copy PV Summarizer Aggregation PV Log SQL*Loader Copy CT Log Insert banner01 • CT не агрегируются • Используем SQL*Loader Oracle Цикл загрузки • Сколько PV суммировать? • Загрузку CT задерживать нельзя! • Late Arrivals Вариант 3 Batch Management (kron) Свертка данных Баннер-сервер Log files Обработка логов banner01 Баннер-сервер Oracle Log files banner02 Баннер-сервер Портал Портал Log files banner03 portal1 Sticky Load Balancer portal2 Load Balancer Проблемы объема • Размер БД растет • Оперативные данные составляют не более 10% Решения • Разделение на несколько БД • Partitioning • Архивирование Одна база / много баз? • Связанность данных • Объем данных для репликации • Сложность схемы Разделение данных Ad Network Finance portal Репликация Portal DB PV/CT/Sales Statistics Logging DB banner Capacity Planning • Оценка загрузки СУБД • Оценка загрузки баннер-серверов Последний вариант Batch Management (kron) Oracle RAC 4 TB Баннер-сервер Свертка данных Обработка логов Load Balancer Log files bannerN Logging DB Ne Sta tis Ad tics Portal DB o tw rk Портал x4 portalN Sticky Load Balancer x 25 Сравним с DART Enterprise • Построен на базе Oracle • Подсчет уникальных событий • Нет поддержки Sales (хотя есть возможность модифицировать DART) • Четкое разделение функций между серверами Компоненты DART ClickServer AdClients AdInsight Server UserServers AdServers Data Bus Inventory Manager Log Processor Database for Reporting, Inventory Management and Business Data AdManager Server Reporting AdManager Обработка запроса в DART Вопросы? Сергей Нековаль Компания «Грамант» snekoval@gramant.ru www.gramant.ru/co/highload2008.ppt