Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Модернизация высоконагруженного проекта на примере  Рамблер ТОП100 Антон Горохов
Функции ТОП100 <ul><li>Каталог   –  сайты разделены по тематике </li></ul><ul><li>Рейтинг  – каждый раздел ранжируется по ...
Устройство сайты  пользователи  backend logs pages counter <ul><li>расчет статистики ресурсов </li></ul><ul><li>расчет гло...
Проблемы <ul><li>Надежность </li></ul><ul><li>Нагрузка на  counter </li></ul><ul><li>Слишком много функций у  backend </li...
Прежде всего   – мониторинг <ul><li>состояние системы </li></ul><ul><li>влияние изменений </li></ul>
Нагрузка на  pages <ul><li>не успевает обработать дневные логи </li></ul><ul><ul><li>статистика ресурсов независима, делим...
Нагрузка на  pages <ul><li>синхронизация  BerkeleyDB  на серверах </li></ul><ul><ul><li>scp  раз в день </li></ul></ul><ul...
Нагрузка на  counter  <ul><li>весна 2008 года – 12000 хитов в секунду </li></ul><ul><li>настройка сервера   +10% производи...
Нагрузка на  counter: backend <ul><li>обсчет логов нескольких  counter </li></ul><ul><ul><li>время - только вперед, т.е.  ...
Нагрузка на  backend <ul><li>разделение на компоненты </li></ul><ul><ul><li>учетные записи из  BerkeleyDB  в  MySQL </li><...
Нагрузка на  backend <ul><li>разделение  backend’a  на 2 по диапазонам счетчиков </li></ul><ul><ul><li>все локальные базы ...
Модификация frontend backend db pages сайты  пользователи  backend logs frontend pages pages db db counter counter counter...
Итого:  <ul><li>Надежность  –  повышена </li></ul><ul><li>Нагрузка на  counter   –  решена </li></ul><ul><li>Слишком много...
Что дальше? <ul><li>надежность и восстановление после сбоев </li></ul><ul><li>статистика </li></ul><ul><ul><li>сбор счетчи...
Спасибо   за внимание frontend backend db pages сайты  пользователи  backend logs frontend pages pages db db counter count...
Upcoming SlideShare
Loading in …5
×

Highload2009 Top100 V3

1,718 views

Published on

  • Be the first to comment

  • Be the first to like this

Highload2009 Top100 V3

  1. 1. Модернизация высоконагруженного проекта на примере Рамблер ТОП100 Антон Горохов
  2. 2. Функции ТОП100 <ul><li>Каталог – сайты разделены по тематике </li></ul><ul><li>Рейтинг – каждый раздел ранжируется по посещаемости, обновление 1 раз в час </li></ul><ul><li>Статистика – для каждого ресурса в реальном времени: </li></ul><ul><ul><li>хиты, хосты и уник. посетители за день </li></ul></ul><ul><ul><li>география посетителей </li></ul></ul><ul><ul><li>посещенные страницы сайта, рефереры, поиск.запросы </li></ul></ul><ul><ul><li>и т.д. </li></ul></ul>
  3. 3. Устройство сайты пользователи backend logs pages counter <ul><li>расчет статистики ресурсов </li></ul><ul><li>расчет глобальной статистики (разделы, все сайты) </li></ul><ul><li>формирование рейтингов </li></ul><ul><li>отображение рейтингов и главной страницы </li></ul><ul><li>отображение статистики </li></ul><ul><li>«личный кабинет» пользователя </li></ul><ul><li>отдача счетчиков </li></ul><ul><li>ведение и передача логов </li></ul><ul><li>упаковка логов </li></ul><ul><li>расчет статистики по страницам, реферерам, поисковым запросам </li></ul>
  4. 4. Проблемы <ul><li>Надежность </li></ul><ul><li>Нагрузка на counter </li></ul><ul><li>Слишком много функций у backend </li></ul><ul><li>Нагрузка на pages </li></ul><ul><li>Нагрузка на backend </li></ul>
  5. 5. Прежде всего – мониторинг <ul><li>состояние системы </li></ul><ul><li>влияние изменений </li></ul>
  6. 6. Нагрузка на pages <ul><li>не успевает обработать дневные логи </li></ul><ul><ul><li>статистика ресурсов независима, делим счетчики по диапазонам и разносим по серверам </li></ul></ul>
  7. 7. Нагрузка на pages <ul><li>синхронизация BerkeleyDB на серверах </li></ul><ul><ul><li>scp раз в день </li></ul></ul><ul><ul><li>в течение дня: </li></ul></ul><ul><ul><ul><li>http </li></ul></ul></ul><ul><ul><ul><li>+ надежно </li></ul></ul></ul><ul><ul><ul><li>– надо ждать ответ </li></ul></ul></ul><ul><ul><ul><li>smtp </li></ul></ul></ul><ul><ul><ul><ul><li>+ несколько попыток отправки </li></ul></ul></ul></ul>
  8. 8. Нагрузка на counter <ul><li>весна 2008 года – 12000 хитов в секунду </li></ul><ul><li>настройка сервера +10% производительности </li></ul><ul><li>разделение на несколько серверов </li></ul><ul><ul><li>делим счетчики по диапазонам </li></ul></ul><ul><ul><li>– не надежно при 2х серверах </li></ul></ul><ul><ul><li>– сложно управлять нагрузкой </li></ul></ul><ul><ul><li>– разные hostname: counter1, counter2, … </li></ul></ul><ul><ul><li>+ можно считать статистику online </li></ul></ul><ul><ul><li>запросы балансируются случайным образом </li></ul></ul><ul><ul><li>– нельзя считать статистику online </li></ul></ul><ul><ul><li>+ счетчиков с цифрами всего 3% </li></ul></ul>
  9. 9. Нагрузка на counter: backend <ul><li>обсчет логов нескольких counter </li></ul><ul><ul><li>время - только вперед, т.е. Merge sort по времени </li></ul></ul><ul><li>увеличение нагрузки на backend </li></ul><ul><ul><li>работа только по времени в логе </li></ul></ul><ul><ul><li>+ backend сам знает, что делать и когда </li></ul></ul><ul><ul><li>+ не надо давать команды извне </li></ul></ul><ul><ul><li>+ может отстать от реального времени в течение дня, а ночью догнать </li></ul></ul>
  10. 10. Нагрузка на backend <ul><li>разделение на компоненты </li></ul><ul><ul><li>учетные записи из BerkeleyDB в MySQL </li></ul></ul><ul><ul><li>+ можно добавлять еще сервера </li></ul></ul><ul><ul><li>+ небольшое число обращений (это не статистика!) </li></ul></ul><ul><ul><li>некоторое время 2 базы работали вместе, потом старую отключили </li></ul></ul><ul><ul><li>глобальная статистика – отдельный сервер </li></ul></ul><ul><ul><li>+ устранена причина для разделения backend’a </li></ul></ul><ul><ul><li>веб-интерфейс – отдельно </li></ul></ul><ul><ul><li>+ 90% запросов – главная страница и рейтинги </li></ul></ul>
  11. 11. Нагрузка на backend <ul><li>разделение backend’a на 2 по диапазонам счетчиков </li></ul><ul><ul><li>все локальные базы со статистикой – по диапазонам: </li></ul></ul><ul><ul><li>stat.db -> stat.db.0, stat.db.1, … 10000 счетчиков в каждой </li></ul></ul><ul><ul><li>веб-фронтенд, глобальная статистика – уже отдельно </li></ul></ul><ul><li>формирование рейтингов </li></ul><ul><ul><li>считаем, что backend’ ы работают в реальном времени каждый час – список посещаемости ресурсов </li></ul></ul><ul><ul><li>– не честно, если один backend отстал </li></ul></ul><ul><ul><li>по времени в логе </li></ul></ul><ul><ul><ul><li>– рейтинг готов, когда все обсчитали данный час </li></ul></ul></ul>
  12. 12. Модификация frontend backend db pages сайты пользователи backend logs frontend pages pages db db counter counter counter global
  13. 13. Итого: <ul><li>Надежность – повышена </li></ul><ul><li>Нагрузка на counter – решена </li></ul><ul><li>Слишком много функций у backend – решена </li></ul><ul><li>Нагрузка на pages – решена </li></ul><ul><li>Нагрузка на backend – решена </li></ul>
  14. 14. Что дальше? <ul><li>надежность и восстановление после сбоев </li></ul><ul><li>статистика </li></ul><ul><ul><li>сбор счетчиком новых параметров </li></ul></ul><ul><ul><li>расширение набора отчетов </li></ul></ul><ul><ul><li>аналитика </li></ul></ul><ul><li>интерфейс пользователя </li></ul><ul><li>поиск информации в каталоге </li></ul>
  15. 15. Спасибо за внимание frontend backend db pages сайты пользователи backend logs frontend pages pages db db counter counter counter global

×