1 / 45

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

Новая архитектура Спайлога. Сергей Скворцов .masterhost 2008-09-22. $Revision:: 56 $. SpyLog – о компании. Система интернет-статистики и аналитики Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост» В первую очередь для: Владельцев сайтов и их маркетологов

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. SpyLog– о компании • Система интернет-статистики и аналитики • Компания работает с 1999 года;в 2007 вошла в состав ГК «Мастерхост» • В первую очередь для: • Владельцев сайтов и их маркетологов • Веб-разработчиков • Специалистов по рекламе

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

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

  5. Базовые сущности – взгляд пользователя • Посетитель • VisitorID - 3rd-party cookie • Счётчик • JavaScript–коди/или картинка(pixel или «кнопка») • Ваш сайт • Как правило, 1 сайт = 1 счётчик • Отчёты (статистика)

  6. Как это работает? • Вы регистрируете счётчик, размещаете его код на своём сайте • Посетители ходят по сайтам (в т.ч. по вашему), делают переходы • Мы собираем данные и генерируем для вас статистику

  7. Статистика - основные термины WAA – Web Analytics Associations • Page – страница • Точка входа, точка перехода, точка выхода • Page View – просмотр страницы • Session - сессия • Visitor – посетитель • Новый, повторный, возвращающийся, уникальный • и т.п.

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

  9. Какие данные собираем? • CJavaScript – технометрику и переходы: • Разрешение монитора, число цветов • Наличие/версия Flash, Java • Timezone • Referrer перехода

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

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

  12. SpyLOG: немного чисел • ~220 млн. pageview в день • ~5.4 TB данных за месяц • ~1.4 GB отчетов за день • охват аудитории: • ~30 млн. посетителей в неделю • ~84 млн. посетителей в месяциз них ~40 млн. – из России

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

  14. Зачем нужно что-то новое? • Жизненный цикл архитектуры • 3-5 лет – средний срок смены архитектуры в динамично растущем проекте • Меняются требования рынка • Меняются технологические среда и окружение

  15. Зачем нужно что-то новое? - 2 • Legacy codebase • 9 лет разработок, несколько поколений программистов • Код: от палеолита до неолита • Проблема с change management • Рефакторинг: был невозможен не только для кода, но и для архитектуры

  16. Новая жизнь с понедельника! • Не всё так просто –есть условия и ограничения: • Обеспечить работоспособность веб-службы • Обратная совместимость со старыми счётчиками • Обеспечить плавную (==плановую) замену подсистем • Обеспечить возможность миграции данных

  17. Новые цели и ориентиры • Появляется много архитектурных идей • Как структурироватьи фильтровать? • Атрибуты качества архитектуры • Как критерии и обоснование, почему делаем именно так, а не иначе • Новые фичи, убиение некоторых старых • Неизбежные компромиссы

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

  19. Архитектура+ проектирование / дизайни немного о реализации

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

  21. Источники данных • Forwarder’ы • Взаимодействие со Старым Спайлогом • Передача данных в кластер • Логи виртуального хостинга • Замена webalyzer, analog, awstats и т.п. • Почтовые логи (недалёкое будущее)

  22. Выходные данные • Интернет-статистика, рейтинги сайтов • www.spylog.ru • Глобальная статистика и мониторинги рынков • Интернет-аналитика • Аналитические отчётына заказ • Ad-hoc запросы (data mining) • Партнёрские сервисы - COMCON

  23. Пример ad-hocзапросов • Какой процент посетителей обновили браузеры на Google Chrome? • Просто интересно :) • На какие ещё сайты ходит аудитория сайта XXX? • т.е. Медиапланирование • Самые интересные запросы превращаются в отчёты • Или публикуются в Глобальной Статистике

  24. NG-Forwarderили Forwarder-NG • Написан на основе nginx 0.7.x • Большой резерв мощности • Можем* считать 38 Яндексов и ещё один портальчег • Полностью обратно-совместим со старой системой • Бинарный протокол и всё такое • Данные в кластер передаются в виде просто текстовых логов

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

  26. Асинхронный счётчик: 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> ДАЖЕ НЕ ПЫТАЙТЕСЬПРОЧЕСТЬ ЭТОТ СЛАЙД

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

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

  29. Forwarder:атрибуты качества • Готовность • Самая критичная подсистема • 100% uptime, минимальное время реакции • Производительность • Максимальная (state machine rocks!) • Stateless frontends →горизонтальное масштабирование

  30. Forwarder & DNS: разнесение • Зачем? • Отказоустойчивость (ДЦ: падение /потеря связи /перегрев) • Быть ближе к посетителю • Варианты: • DNS - split horizon (views) по AS • BGP – IP Anycast Routing • Фильтруют анонсы • Только UDP

  31. Forwarder: детали • Форвардеры ходят парами • FreeBSD + CARP • Резервирование и балансировка нагрузки • Вся текущая нагрузка держится 2-мя серверами в ДЦ Мастерхоста • Load averages: 0.80 • Сейчас ставим ещёпару - в Голландии • Хотите, поставим у вас?

  32. GeoDB – БД по географии и AS • Forwarders – резолвинг во время запроса (ngx_http_geo_module) • Web Services – лишь в качестве справочника • Т.е. нет центральной online database • Несколько источников данных, верификация, регулярные обновления

  33. Кластер: вычисления • Map/Reduce • Функциональный подход • Используется в Google • Мы взяли open-source реализацию:Hadoop • Используется в Yahoo!, Facebook, etc. • Детали – в отдельном докладе

  34. Map / Reduce

  35. Кластер: хранение данных • DFS – Distributed File System • Стандартная HDFSв Hadoop • Рассматривались другие: • Lustre – POSIX-compatible; идёт портирование под FreeBSD • KosmosFS – есть интеграция с Hadoop • GlusterFS • В будущем может и сменим HDFS на другое

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

  37. Кластер: атрибуты качества • Отказоустойчивость через резервирование • Расчёт на ожидаемость падения data-nodes • Гетерогенные сервера • Простота эксплуатации (сопровождаемость) • УстановкаОСчерез PXE, развёртывание образа – и запуск!

  38. Кластер: железо • 12 серверов:2 CPU x 4-Core; 8GB RAM; 6TB HDD • 1Gbit network • FreeBSD 7.0 amd64 • Storage: gjournal + gmirror • Раньше был ZFS (raidz), но высокую IO нагрузку не потянул • Резервирование на уровне HDFS (3 реплики)

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

  40. REST API: атрибуты качества • Uniform interface– HTTP • Простота и очевидность кодирования / использования • Слоевая архитектура • Отделение клиентской веб-части от ресурсов/данных • Кэшируемость • Важно как API, так и для AJAX / Flash • Statelessness → load balancing • Как итог – хорошая масштабируемость

  41. REST API - открытый • Можете напрямую получать свою статистику • или даже чужую,если она публично доступна :) • Mashup – можете строить свои сервисы, использующие наши API • Поддержка протокола OAuth– чтобезопасно для конечного пользователя

  42. Web Services: типичный дизайн • OS – FreeBSD • Всё внутри jails • Минимум 2 instance серверов (CARP) • Frontend – nginx • Application backends –Catalyst (Perl) • RDBMS – PostgreSQL • Репликация или нет – зависит от приложения • Иногда в БД вообще нет нужды

  43. Инфраструктура • Гетерогенные сервера • ОС, железо • Кластер – в одном ДЦ • Связность между ДЦ – 10Gbit • Forwarders • В разных ДЦ • Сервера для веб-сервисов – где угодно

  44. Итак, когда? • Рассказ был про архитектуру • Реализация в самом разгаре • В октябре 2008 выходит новый сайт:trends.spylog.ru • Далее, по очереди, заменяются все старые сервисы на новые • Ждите новостей!

  45. Вопросы?(по теме доклада) Сергей Скворцов skv@masterhost.ru

More Related