• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
New SpyLOG architechture (Highload 2008)
 

New SpyLOG architechture (Highload 2008)

on

  • 575 views

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

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

Statistics

Views

Total Views
575
Views on SlideShare
575
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    New SpyLOG architechture (Highload 2008) New SpyLOG architechture (Highload 2008) Presentation Transcript

    • Новая архитектура Спайлога Сергей Скворцов .masterhost 2008-09-22 $Revision:: 56 $
    • SpyLog – о компании
      • Система интернет-статистики и аналитики
      • Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост»
      • В первую очередь для:
        • Владельцев сайтов и их маркетологов
        • Веб-разработчиков
        • Специалистов по рекламе
    • Содержание
      • Введение: предметная область
      • Постановка задачи
      • Архитектура
    • Введение: предметная область
    • Базовые сущности – взгляд пользователя
        • Посетитель
          • VisitorID - 3 rd -party cookie
        • Счётчик
          • JavaScript– код и/или картинка ( pixel или «кнопка»)
        • Ваш сайт
          • Как правило, 1 сайт = 1 счётчик
        • Отчёты (статистика)
    • Как это работает?
      • Вы регистрируете счётчик , размещаете его код на своём сайте
      • Посетители ходят по сайтам (в т.ч. по вашему), делают переходы
      • Мы собираем данные и генерируем для вас статистику
    • Статистика - основные термины
        • WAA – Web Analytics Associations
        • Page – страница
          • Точка входа, точка перехода, точка выхода
        • Page View – просмотр страницы
        • Session - сессия
        • Visitor – посетитель
          • Новый, повторный, возвращающийся, уникальный
        • и т.п.
    • Какие данные собираем?
      • Без JavaScript – базовые данные :
      • Timestamp – дата и время
      • URI страниц
      • UserAgent -> браузеры , ОС
      • IP address -> география, AS
      • Cookie -> VisitorID
    • Какие данные собираем?
      • C JavaScript – технометрику и переходы :
      • Разрешение монитора, число цветов
      • Наличие / версия Flash, Java
      • Timezone
      • Referrer перехода
    • Статистика: что считаем?
      • Посетители :
        • Количество
        • Откуда пришли, куда ушли
        • Как часто ходят, где (пути по сайту)
        • Сколько времени провели
        • На какую рекламу кликали – OpenStat
    • Статистика: что считаем?
      • Прочее :
        • ОС
        • Браузеры
        • География
        • Технометрика
        • Поисковые запросы
        • и т.д.
    • SpyLOG : немного чисел
      • ~ 22 0 млн . pageview в день
      • ~ 5.4 T B данных за месяц
      • ~ 1.4 GB отчетов за день
      • охват аудитории:
        • ~ 30 млн. посетителей в неделю
        • ~ 84 млн. посетителей в месяц из них ~ 40 млн. – из России
    • Постановка задачи
    • Зачем нужно что-то новое?
      • Жизненный цикл архитектуры
        • 3-5 лет – средний срок смены архитектуры в динамично растущем проекте
        • Меняются требования рынка
        • Меняются технологические среда и окружение
    • Зачем нужно что-то новое? - 2
      • Legacy codebase
        • 9 лет разработок, несколько поколений программистов
        • Код: от палеолита до неолита
        • Проблема с change management
        • Рефакторинг: был невозможен не только для кода, но и для архитектуры
    • Новая жизнь с понедельника!
      • Не всё так просто – есть условия и ограничения:
      • Обеспечить работоспособность веб-службы
      • Обратная совместимость со старыми счётчиками
      • Обеспечить плавную (==плановую) замену подсистем
      • Обеспечить возможность миграции данных
    • Новые цели и ориентиры
      • Появляется много архитектурных идей
      • Как структурировать и фильтровать?
        • Атрибуты качества архитектуры
          • Как критерии и обоснование, почему делаем именно так, а не иначе
        • Новые фичи, убиение некоторых старых
        • Неизбежные компромиссы
    • Атрибуты качества
      • Готовность (Availability)
      • Производительность (Performance)
      • Модифицируемость (Modifiability)
      • Безопасность (Security)
      • Сопровождаемость (Maintainability)
      • Концептуальная целостность (Conceptual integrity)
    • Архитектура + проектирование / дизайн и немного о реализации
    • Общая схема архитектуры
    • Источники данных
      • Forwarder’ ы
        • Взаимодействие со Старым Спайлогом
        • Передача данных в кластер
      • Логи виртуального хостинга
        • Замена webalyzer, analog, awstats и т.п.
      • Почтовые логи (недалёкое будущее)
    • Выходные данные
      • Интернет-статистика, рейтинги сайтов
        • www.spylog.ru
      • Глобальная статистика и мониторинги рынков
      • Интернет-аналитика
        • Аналитические отчёты на заказ
        • Ad-hoc запросы ( data mining)
        • Партнёрские сервисы - COMCON
    • Пример ad-hoc запросов
      • Какой процент посетителей обновили браузеры на Google Chrome?
        • Просто интересно :)
      • На какие ещё сайты ходит аудитория сайта XXX?
        • т.е. Медиапланирование
      • Самые интересные запросы превращаются в отчёты
        • Или публикуются в Глобальной Статистике
    • NG-Forwarder или Forwarder - NG
      • Написан на основе nginx 0.7.x
      • Большой резерв мощности
        • Можем * считать 38 Яндексов и ещё один портальчег
      • Полностью обратно-совместим со старой системой
        • Бинарный протокол и всё такое
      • Данные в кластер передаются в виде просто текстовых логов
    • Forwarder : асинхронный счётчик
    • Асинхронный счётчик: JS ДАЖЕ НЕ ПЫТАЙТЕСЬ ПРОЧЕСТЬ ЭТОТ СЛАЙД <script type=&quot;text/javascript&quot;> var spylog = { counter: NNN , next: spylog }; document.write(unescape('%3Cscript src=&quot;http‘ + (('https:' == document.location.protocol) ? 's' : '') + '://counter.spylog.com/cnt.js&quot; defer=&quot;defer&quot; %3E%3C/script%3E')); </script>
    • Асинхронный счётчик
      • Оптимизирован под высоконагруженные сайты
      • Без (!) картинки
      • Максимально быстрая загрузка
      • Отложенный parsing ( defer - IE )
      • Несколько экземпляров счётчика на странице
      • Разумеется, HTTPS
    • Счётчик с картинкой
    • Forwarder: атрибуты качества
      • Готовность
        • Самая критичная подсистема
        • 100% uptime, минимальное время реакции
      • Производительность
        • Максимальная ( state machine rocks!)
        • Stateless frontends -> горизонтальное масштабирование
    • Forwarder & DNS: разнесение
      • Зачем?
        • Отказоустойчивость (ДЦ: падение /потеря связи /перегрев)
        • Быть ближе к посетителю
      • Варианты:
        • DNS - split horizon (views) по AS
        • BGP – IP Anycast Routing
          • Фильтруют анонсы
          • Только UDP
    • Forwarder: детали
      • Форвардеры ходят парами
        • FreeBSD + CARP
        • Резервирование и балансировка нагрузки
      • Вся текущая нагрузка держится 2-мя серверами в ДЦ Мастерхоста
        • Load averages: 0.80
      • Сейчас ставим ещё пару - в Голландии
      • Хотите, поставим у вас ?
    • GeoDB – БД по географии и AS
      • Forwarders – резолвинг во время запроса (ngx_http_geo_module)
      • Web Services – лишь в качестве справочника
      • Т.е. нет центральной online database
      • Несколько источников данных, верификация, регулярные обновления
    • Кластер : вычисления
      • Map/Reduce
        • Функциональный подход
        • Используется в Google
        • Мы взяли open-source реализацию: Hadoop
          • Используется в Yahoo!, Facebook, etc.
        • Детали – в отдельном докладе
    • Map / Reduce
    • Кластер : хранение данных
      • DFS – Distributed File System
        • Стандартная HDFS в Hadoop
        • Рассматривались другие:
          • Lustre – POSIX-compatible; идёт портирование под FreeBSD
          • KosmosFS – есть интеграция с Hadoop
          • GlusterFS
        • В будущем может и сменим HDFS на другое
    • Кластер : роли серверов
    • Кластер: атрибуты качества
      • Отказоустойчивость через резервирование
        • Расчёт на ожидаемость падения data-nodes
      • Гетерогенные сервера
        • Простота эксплуатации (сопровождаемость)
        • Установка ОС через PXE, развёртывание образа – и запуск!
    • Кластер: железо
      • 12 серверов : 2 CPU x 4 -Core; 8 GB RAM; 6 TB HDD
      • 1Gbit network
      • FreeBSD 7.0 amd64
      • Storage: gjournal + gmirror
        • Раньше был ZFS (raidz), но высокую IO нагрузку не потянул
      • Резервирование на уровне HDFS (3 реплики)
    • Web Services: общая схема
    • REST API: атрибуты качества
      • U niform interface – HTTP
        • Простота и очевидность кодирования / использования
      • Слоевая архитектура
        • Отделение клиентской веб-части от ресурсов/данных
      • Кэшируемость
        • Важно как API , так и для AJAX / Flash
      • Statelessness -> load balancing
      • Как итог – хорошая масштабируемость
    • REST API - открытый
      • Можете напрямую получать свою статистику
        • или даже чужую , если она публично доступна :)
      • Mashup – можете строить свои сервисы, использующие наши API
        • Поддержка протокола OAuth – что безопасно для конечного пользователя
    • Web Services: типичный дизайн
      • OS – FreeBSD
        • Всё внутри jails
        • Минимум 2 instance серверов (CARP)
      • Frontend – nginx
      • Application backends – Catalyst ( Perl )
      • RDBMS – PostgreSQL
        • Репликация или нет – зависит от приложения
        • Иногда в БД вообще нет нужды
    • Инфраструктура
      • Гетерогенные сервера
        • ОС, железо
      • Кластер – в одном ДЦ
        • Связность между ДЦ – 10 Gbit
      • Forwarders
        • В разных ДЦ
      • Сервера для веб-сервисов – где угодно
    • Итак, когда?
      • Рассказ был про архитектуру
      • Реализация в самом разгаре
      • В октябре 2008 выходит новый сайт: trends.spylog.ru
      • Далее, по очереди, заменяются все старые сервисы на новые
      • Ждите новостей!
    • Вопросы? ( по теме доклада) Сергей Скворцов [email_address]