45
Новая архитектура Спайлога Сергей Скворцов .masterhost 2008-09-22 $Revision:: 56 $

New SpyLOG architechture (Highload 2008)

Embed Size (px)

DESCRIPTION

Новая архитектура Спайлога (2008)

Citation preview

Page 1: New SpyLOG architechture (Highload 2008)

Новая архитектураСпайлога Новая архитектураСпайлога

Сергей Скворцов.masterhost

2008-09-22

Сергей Скворцов.masterhost

2008-09-22

$Revision:: 56 $

Page 2: New SpyLOG architechture (Highload 2008)

SpyLog – о компании SpyLog – о компании • Система интернет-статистики и аналитики • Компания работает с 1999 года;

в 2007 вошла в состав ГК «Мастерхост» • В первую очередь для:

– Владельцев сайтов и их маркетологов– Веб-разработчиков– Специалистов по рекламе

Page 3: New SpyLOG architechture (Highload 2008)

СодержаниеСодержание

•Введение: предметная область•Постановка задачи•Архитектура

Page 4: New SpyLOG architechture (Highload 2008)

Введение:предметная область

Введение:предметная область

Page 5: New SpyLOG architechture (Highload 2008)

Базовые сущности – взгляд пользователяБазовые сущности – взгляд пользователя

– Посетитель•VisitorID - 3rd-party cookie

– Счётчик•JavaScript–код и/или картинка

(pixel или «кнопка»)– Ваш сайт

•Как правило, 1 сайт = 1 счётчик– Отчёты (статистика)

Page 6: New SpyLOG architechture (Highload 2008)

Как это работает?Как это работает?1. Вы регистрируете счётчик, размещаете его

код на своём сайте

2. Посетители ходят по сайтам (в т.ч. по вашему), делают переходы

3. Мы собираем данные и генерируем для вас статистику

Page 7: New SpyLOG architechture (Highload 2008)

Статистика - основные терминыСтатистика - основные терминыWAA – Web Analytics Associations– Page – страница

• Точка входа, точка перехода, точка выхода

– Page View – просмотр страницы– Session - сессия– Visitor – посетитель

• Новый, повторный, возвращающийся, уникальный

– и т.п.

Page 8: New SpyLOG architechture (Highload 2008)

Какие данные собираем?Какие данные собираем?• Без JavaScript – базовые данные:

• Timestamp – дата и время• URI страниц• UserAgent → браузеры, ОС• IP address → география, AS• Cookie → VisitorID

Page 9: New SpyLOG architechture (Highload 2008)

Какие данные собираем?Какие данные собираем?• C JavaScript – технометрику и переходы:

• Разрешение монитора, число цветов• Наличие/версия Flash, Java• Timezone• Referrer перехода

Page 10: New SpyLOG architechture (Highload 2008)

Статистика: что считаем?Статистика: что считаем?•Посетители:

– Количество– Откуда пришли, куда ушли– Как часто ходят, где (пути по сайту)– Сколько времени провели– На какую рекламу кликали – OpenStat

Page 11: New SpyLOG architechture (Highload 2008)

Статистика: что считаем?Статистика: что считаем?•Прочее:

– ОС– Браузеры– География– Технометрика– Поисковые запросы– и т.д.

Page 12: New SpyLOG architechture (Highload 2008)

SpyLOG: немного чиселSpyLOG: немного чисел• ~220 млн. pageview в день• ~5.4 TB данных за месяц• ~1.4 GB отчетов за день• охват аудитории:

– ~30 млн. посетителей в неделю– ~84 млн. посетителей в месяц

из них ~40 млн. – из России

Page 13: New SpyLOG architechture (Highload 2008)

Постановка задачиПостановка задачи

Page 14: New SpyLOG architechture (Highload 2008)

Зачем нужно что-то новое? Зачем нужно что-то новое? • Жизненный цикл архитектуры

– 3-5 лет – средний срок смены архитектуры в динамично растущем проекте

– Меняются требования рынка– Меняются технологические среда и

окружение

Page 15: New SpyLOG architechture (Highload 2008)

Зачем нужно что-то новое? - 2Зачем нужно что-то новое? - 2• Legacy codebase

– 9 лет разработок, несколько поколений программистов

– Код: от палеолита до неолита– Проблема с change management– Рефакторинг: был невозможен не только

для кода, но и для архитектуры

Page 16: New SpyLOG architechture (Highload 2008)

Новая жизнь с понедельника!Новая жизнь с понедельника!• Не всё так просто –

есть условия и ограничения:• Обеспечить работоспособность веб-службы• Обратная совместимость со старыми

счётчиками• Обеспечить плавную (==плановую) замену

подсистем• Обеспечить возможность миграции данных

Page 17: New SpyLOG architechture (Highload 2008)

Новые цели и ориентирыНовые цели и ориентиры• Появляется много архитектурных идей• Как структурировать и фильтровать?

– Атрибуты качества архитектуры• Как критерии и обоснование, почему делаем именно

так, а не иначе

– Новые фичи, убиение некоторых старых– Неизбежные компромиссы

Page 18: New SpyLOG architechture (Highload 2008)

Атрибуты качестваАтрибуты качества• Готовность (Availability)• Производительность (Performance)• Модифицируемость (Modifiability)• Безопасность (Security)• Сопровождаемость (Maintainability)• Концептуальная целостность (Conceptual

integrity)

Page 19: New SpyLOG architechture (Highload 2008)

Архитектура

+ проектирование / дизайн

и немного о реализации

Архитектура

+ проектирование / дизайн

и немного о реализации

Page 20: New SpyLOG architechture (Highload 2008)

Общая схема архитектурыОбщая схема архитектуры

DFS: HDFSВиртуальный хостинг

Уровень БД

Уровень приложения

Веб-сайт

Сбор данных Вычислительный кластер

Map/Reduce: Hadoop

Forwarders

RESTAPI

Web-services

Page 21: New SpyLOG architechture (Highload 2008)

Источники данныхИсточники данных1. Forwarder’ы

– Взаимодействие со Старым Спайлогом– Передача данных в кластер

2. Логи виртуального хостинга– Замена webalyzer, analog, awstats и т.п.

3. Почтовые логи (недалёкое будущее)

Page 22: New SpyLOG architechture (Highload 2008)

Выходные данныеВыходные данные1. Интернет-статистика, рейтинги сайтов

– www.spylog.ru

2. Глобальная статистика и мониторинги рынков

3. Интернет-аналитика– Аналитические отчёты на заказ– Ad-hoc запросы (data mining)– Партнёрские сервисы - COMCON

Page 23: New SpyLOG architechture (Highload 2008)

Пример ad-hoc запросовПример ad-hoc запросов• Какой процент посетителей обновили

браузеры на Google Chrome?- Просто интересно :)

• На какие ещё сайты ходит аудитория сайта XXX?

- т.е. Медиапланирование• Самые интересные запросы превращаются в

отчёты– Или публикуются в Глобальной Статистике

Page 24: New SpyLOG architechture (Highload 2008)

NG-Forwarder или Forwarder-NGNG-Forwarder или Forwarder-NG• Написан на основе nginx 0.7.x• Большой резерв мощности

– Можем* считать 38 Яндексов и ещё один портальчег

• Полностью обратно-совместим со старой системой– Бинарный протокол и всё такое

• Данные в кластер передаются в виде просто текстовых логов

Page 25: New SpyLOG architechture (Highload 2008)

Forwarder: асинхронный счётчикForwarder: асинхронный счётчик

nginxForwarder

<script />

<img />

DFS: HDFS

Map/Reduce: Hadoop

access logs

Page 26: New SpyLOG architechture (Highload 2008)

Асинхронный счётчик: JSАсинхронный счётчик: JS

ДАЖЕ НЕ ПЫТАЙТЕСЬПРОЧЕСТЬ ЭТОТ СЛАЙД

<script type="text/javascript">

var spylog = { counter: NNN, next: spylog };

document.write(unescape('%3Cscript src="http‘+ (('https:' == document.location.protocol) ? 's' : '')

+ '://counter.spylog.com/cnt.js" defer="defer"%3E%3C/script%3E'));

</script>

Page 27: New SpyLOG architechture (Highload 2008)

Асинхронный счётчикАсинхронный счётчик• Оптимизирован под высоконагруженные

сайты• Без (!) картинки• Максимально быстрая загрузка• Отложенный parsing (defer - IE)• Несколько экземпляров счётчика на

странице• Разумеется, HTTPS

Page 28: New SpyLOG architechture (Highload 2008)

Счётчик с картинкойСчётчик с картинкой

nginxForwarder

<script />

<img />

DFS: HDFS

Map/Reduce: Hadoop

access logs

Картинкас числами

memcached

1 счётчик = ~ 64 байт в кэше

Page 29: New SpyLOG architechture (Highload 2008)

Forwarder: атрибуты качестваForwarder: атрибуты качества• Готовность

– Самая критичная подсистема– 100% uptime, минимальное время реакции

• Производительность– Максимальная (state machine rocks!)

– Stateless frontends → горизонтальное масштабирование

Page 30: New SpyLOG architechture (Highload 2008)

Forwarder & DNS: разнесениеForwarder & DNS: разнесение• Зачем?

– Отказоустойчивость (ДЦ: падение /потеря связи /перегрев)

– Быть ближе к посетителю• Варианты:

– DNS - split horizon (views) по AS– BGP – IP Anycast Routing

• Фильтруют анонсы• Только UDP

Page 31: New SpyLOG architechture (Highload 2008)

Forwarder: деталиForwarder: детали• Форвардеры ходят парами

– FreeBSD + CARP– Резервирование и балансировка нагрузки

• Вся текущая нагрузка держится 2-мя серверами в ДЦ Мастерхоста– Load averages: 0.80

• Сейчас ставим ещё пару - в Голландии• Хотите, поставим у вас?

Page 32: New SpyLOG architechture (Highload 2008)

GeoDB – БД по географии и ASGeoDB – БД по географии и AS• Forwarders – резолвинг во время запроса

(ngx_http_geo_module)• Web Services – лишь в качестве справочника• Т.е. нет центральной online database• Несколько источников данных,

верификация, регулярные обновления

Page 33: New SpyLOG architechture (Highload 2008)

Кластер: вычисленияКластер: вычисления•Map/Reduce

– Функциональный подход– Используется в Google– Мы взяли open-source реализацию:

Hadoop•Используется в Yahoo!, Facebook, etc.

– Детали – в отдельном докладе

Page 34: New SpyLOG architechture (Highload 2008)

Map / ReduceMap / Reduce

Page 35: New SpyLOG architechture (Highload 2008)

Кластер: хранение данныхКластер: хранение данных• DFS – Distributed File System

– Стандартная HDFS в Hadoop– Рассматривались другие:

•Lustre – POSIX-compatible; идёт портирование под FreeBSD

•KosmosFS – есть интеграция с Hadoop•GlusterFS

– В будущем может и сменим HDFS на другое

Page 36: New SpyLOG architechture (Highload 2008)

Кластер: роли серверовКластер: роли серверов

Data Node

Task Node

Data Node

Task Node

Data Node

Task Node

Name Node

Job Tracker

Page 37: New SpyLOG architechture (Highload 2008)

Кластер: атрибуты качестваКластер: атрибуты качества• Отказоустойчивость через резервирование

– Расчёт на ожидаемость падения data-nodes• Гетерогенные сервера

– Простота эксплуатации (сопровождаемость)– Установка ОС через PXE, развёртывание образа –

и запуск!

Page 38: New SpyLOG architechture (Highload 2008)

Кластер: железоКластер: железо• 12 серверов:

2 CPU x 4-Core; 8GB RAM; 6TB HDD• 1Gbit network• FreeBSD 7.0 amd64• Storage: gjournal + gmirror

– Раньше был ZFS (raidz), но высокую IO нагрузку не потянул

• Резервирование на уровне HDFS (3 реплики)

Page 39: New SpyLOG architechture (Highload 2008)

Web Services: общая схемаWeb Services: общая схема

DFS: HDFS

App: клиентский веб-интерфейс

nginx

App: REST API

Статистика / Отчёты

БД веб-службы

Внешние БД

Page 40: New SpyLOG architechture (Highload 2008)

REST API: атрибуты качестваREST API: атрибуты качества• Uniform interface – HTTP

– Простота и очевидность кодирования / использования

• Слоевая архитектура– Отделение клиентской веб-части от ресурсов/данных

• Кэшируемость– Важно как API, так и для AJAX / Flash

• Statelessness → load balancing• Как итог – хорошая масштабируемость

Page 41: New SpyLOG architechture (Highload 2008)

REST API - открытыйREST API - открытый• Можете напрямую получать свою

статистику– или даже чужую,

если она публично доступна :)

• Mashup – можете строить свои сервисы, использующие наши API– Поддержка протокола OAuth – что

безопасно для конечного пользователя

Page 42: New SpyLOG architechture (Highload 2008)

Web Services: типичный дизайнWeb Services: типичный дизайн• OS – FreeBSD

– Всё внутри jails– Минимум 2 instance серверов (CARP)

• Frontend – nginx• Application backends – Catalyst (Perl)• RDBMS – PostgreSQL

– Репликация или нет – зависит от приложения– Иногда в БД вообще нет нужды

Page 43: New SpyLOG architechture (Highload 2008)

ИнфраструктураИнфраструктура• Гетерогенные сервера

– ОС, железо

• Кластер – в одном ДЦ– Связность между ДЦ – 10Gbit

• Forwarders– В разных ДЦ

• Сервера для веб-сервисов – где угодно

Page 44: New SpyLOG architechture (Highload 2008)

Итак, когда?Итак, когда?• Рассказ был про архитектуру• Реализация в самом разгаре• В октябре 2008 выходит новый сайт:

trends.spylog.ru• Далее, по очереди, заменяются все старые

сервисы на новые• Ждите новостей!

Page 45: New SpyLOG architechture (Highload 2008)

Вопросы?

(по теме доклада)

Вопросы?

(по теме доклада)

Сергей Скворцов

[email protected]