Пример архитектуры, используемой на высоконагруженном видео портале

Turik Askaryanov 2011 M05 7
476
4
0
0

В этой статье мне немного хотелось бы рассказать про архитектуру, которую мы используем в нашей компании. Ну вот, перейдет к архитектуре: Вебсервера На данном проекте используется 17 вебсерверов...

В этой статье мне немного хотелось бы рассказать про архитектуру, которую мы используем в нашей компании. Ну вот, перейдет к архитектуре:

Вебсервера

На данном проекте используется 17 вебсерверов, использующих Apache. Код проекта написан на PHP. Сервера выбираются случайным образом (у нас пока нет лоад балансера, но мы идем к этому), поэтому нагрузка на всех серверах приблизительно одинаковая, если говорить про CPU (8 ядер), то это около 40% в пиковое время. На каждом сервере также имеется локальная версия MySQL для счетчиком просмотра видео. Для PHP используется eAccelerator.

Базы данных

У нас имеется два кластера баз данных MySQL, каждый содержит определынный набор таблиц. Первый содержит: 1 мастер и 4 слейва (нагрузка в пиковое время 30%); Второй: 1 мастер и 6 слейвов (нагрузка в пиковое время 25%). Слейвы успешно синхронизируются с мастером, на который происходит запись данных. Слейвы служат только для чтения. Сервера выбираются случайным образом (лоад балансер не помещал бы). На каждом сервере так же имеется по одному инстансу Sphinx, который активно используется для поиска.

Кэширование

Для кэширования используется Memcached, который так же разнесен на 4 сервера. Каждый сервер содержит по три инстанции Memcache по 2 Гб каждый. Первая инстанция используется для кеширования данных, полученных с первого кластера БД. Вторая соответственно для второго кластера БД. А третью, мы стали недавно использовать для HTML кеширования страниц, что дало ощутимый прирост производительности, и сняло нагрузку c вебсерверов. Первая инстанция почти всегда заполнена, и мы наблюдаем постоянные evictions, но мы над этим работаем. Нагрузка на серверах около 10% в пиковое время.

Медиа сервера

Не могу сказать точно, сколько серверов используется, но порядка 45, которые находятся в Штатах и Нидерландах. Есть мастер сервер, с которым остальные синхронизируются, но слейвы содержат не все файлы, а только те, что недавно использовались. Если запрошенного файла нет на слейве, он перенаправляет на мастера, а сам тем временем скачивает этот файл себе.

CDN сервера

Услуги по раздаче статического контента мы берем у одной крупной компании, которая имеет сервера по всему миру, сколько их я не знаю, но мы отлично экономим на траффике, используя CDN сервера. Они кстати синхронизируются с нашим мастер сервером, на котором хранится весь статический контент.

Жду вопросов, критику, и обсуждения каждого пункта.

 

Оцените пост

0

Комментарии

0
Спасибо, интересный пост! Возникло несколько вопросов:

1) зачем на каждом сервере отдельный Sphinx? Получается, что индексы у каждого свои и надо реиндексировать везде? Или я не так понял?
2) Почему eAccelerator? Он очень давно не обновляется, насколько я помню.
3) InnoDB или MyISAM? =)
0
Skyress, давай и комменты тоже скопипастим? Я начину:
Спасибо, очень интересно! Давно интересуюсь архитектурой и конкретными решениями для высоконагруженных проектов. Могли бы вы посоветовать какую-то литературу по этому?
0
Это копипаст? :D Черт, Skypress, а я уже обрадовался, что на платформе появился грамотный чувак. Даже плюс поставил в профайл!
0
Что за нагрузка-то?
Показать комментарии
Дальше