Главная > AJAX, MMOG, MMORPG игры, Блоги, веб-обзоры, Высокопроизводительная архитектура, Разное > Кто и как создаёт большие, масштабируемые и высоконагруженные веб-сайты.

Кто и как создаёт большие, масштабируемые и высоконагруженные веб-сайты.

20 октября 2007

Сегодня я расскажу вам об очень интересном ресурсе, где собираются материалы (часто эксклюзивные) о построении веб-сайтов, которые могут обслуживать тысячи и миллионы пользователей - а проще, высоконагруженные проекты. Такие системы, конечно же, отличаются от обычных веб-сайтов, к примеру, такого, как этот - мы вряд л выдержим трафик больше нескольких десятков тысяч пользователей, хотя сам движок WordPress вполне справиться с такой нагрузкой - подтверждение этому популярнейшие блоги, вроде Techcrunch. Но кто и как создаёт проекты, вроде Twitter-а, Flickr и подобные?

Для ответа на такие вопросы и существует сайт под названием High Scalability - организованный в виде блога, он аккумулирует большинство доступных знаний о построении подобных систем. Что же там можно узнать интересного?

Вам знаком проект Twitter.com? Скорее всего да, ведь он породил новое направление в уже, казалось бы, полностью особенном рынке сетевой блог-журналистики. А ведь он прошёл путь от безымянного старта с 0.0 просмотров страниц к миллионам посещений в сутки всего за несколько месяцев (не правда ли, мечта любого старт-апа?). А все благодаря платформе Ruby on Rails, на которой построен этот сервис, что и позволило сделать его фантастически быстрым. Конечно, не все так просто - сама по себе технология и язык не дают такого преимущества (заявления разработчиков, что они стали быстрее в 10000%). Сейчас, по данным ресурса, там 600 запросов в секунду и 200 - 300 соединений. А хотите узнать страшную правду? Да! Они использую не только Ruby on Rails, но и Erlang (платформа для построения телекоммуникационных приложений реального времени, максимально использующих многопоточность и масштабируемость), MySQL СУБД (не верите? там 2400 запросов в секунду, которые обрабатываются одним мощным 8-процессорным сервером), Mongrel в качестве веб-сервера, и, как же без этого, систему кеширования Memcached, которая занимает аж 16 Гб оперативной памяти. Это только вершина айсберга, а вот подробности вы можете прочитать на самом сайте - вот в этой статье (Scaling Twitter: Making Twitter 10000 Percent Faster) или просмотреть в презентации:

View "Scaling Twitter" on SlideShare

А дальше будут не менее интересные вещи. Вы, возможно, приверженец Java? Тогда следующий материал для вас - архитектура, ориентированная на обработку множества неблокируемых соединений (Non-blocking I/O). И хотя на многих форумах давно уже идут holy war на тему "тормознутости" Java, хотя сам веб-сайт SUN не отличается реактивностью, но сама по себе Java не так уж и плоха, да и давно стала Enterprise-ready стандартом, потому вам будет полезно ознакомиться с этой статьёй -
Architecture of a Highly Scalable NIO-Based Server.

Ну и снова про блоги. Сервис Fotolog, социальный сервер фотоблогов и фотохостинга, работает по меркам интернета давно, с 2002 года имея всего 300 тысяч пользователей, а уже сейчас, в 2007 году их количество перевалило за 11 миллионов человек! Около 800 тысяч фотографий добавляется каждый день, а все это порождается 20 миллионами уникальных посетителей в месяц. Хотите узнать больше? На старте у проекта не было никакой масштабируемой архитектуры, в команде всего трое человек и через два года всего 300 тысяч пользователей, первоначальная система написана на РНР. Теперь все это превратилось в 3.5 миллиарда просмотров страниц в месяц и миллионы пользователей. А работает система на платформе Java, на операционной системе SUN Solaris 10, веб-сервере Apache. В качестве хранилища данных используется, кто бы мог подумать, СУБД MySQL, на 32 серверах, организованных в 4 кластера, каждый из которых обслуживает свою подсистему (пользовательские аккаунты, гостевая книга, база фотографий (метаданных) и база пользовательских закладок, друзей и избранного). Используются транзакционные таблицы InnoDB. В качестве хранилища самих фотоданных используется специальная линейная файловая система IBRIX и система хранения 3PAR. Для доступа к СУБД используется популярная библиотека Hibernate, ну и кёширование уже традиционно использует массив серверов (50 единиц) под Memcached, который использует в общей сложности 150 Гб кёш.

Детальнее об архитектуре можно почитать здесь - Secrets to Fotolog's Scaling Success, а также в презентации ниже:

View

Я выбрал только самые, на мой взгляд, интересные материалы с последних обновлений сайта, но его, безусловно, стоит изучить весь, да и еще занести в закладки и подписаться на ленту обновлений, чтобы быть в курсе всех новостей. Кстати, здесь есть ряд ссылок на аналогичные материалы, которые обязательны к просмотру. Но это ведь не единственный ресурс такого рода.

Если вас интересует построение подобных систем, но в применении для других приложений, не веб-сервисов, то стоит почитать про уникальный опыт компании CCP Games, которая разрабатывает и поддерживает единственную в своем роде онлайновую многопользовательскую игру про космос - EVE Online. Примечателен этот опыт тем, что их серверная платформа поддерживает до 50 000 игроков одновременно. Кластер серверов работает на основе 64-битных AMD Opteron процессоров, а вместо традиционной дисковой системы хранения данных использует Solid State Disks (SSD) - твердотельные диски на основе флеш-памяти, которые хоть и достаточно дорогие по сравнению с типичными решениями, но позволяют обслуживать до 400 тысяч случайных операций ввода/вывода в секунду! Полная версия статьи здесь.

И в заключение - оказалось, существует и книга по практике построения масштабируемых веб-сервисов. Лна так и называется "Building Scalable Websites", в дополнение к которой в этом посте есть много интереснейших презентаций, доступных онлайн и рассказывающих о тонкостях внутреннего устройства популярных сервисов.

Как видите, различные сервисы выбирают свою архитектуру, часто используя как общие, проверенные технологии, вроде Memcached, так и сложные специализированные решения вроде IBRIX или SSD. Даже гиганты индустрии не гнушаются использовать то, что считают подходящим для своих задач - тот же MySQL, хотя сейчас найдется тысяча гневных пользователей, которые напишут, что это непригодная система и посоветуют PostgreSQL, Oracle или Firebird. Конечно, в чем-то они будут правы, ведь существуют и системы на этих продуктах, и думаю, не менее успешные. Так возможно не стоит зацикливаться и тратить время на спор - а просто досконально изучить то, что есть и использовать, а не тратить время и нервы на выслушивание скептиков? В конце концов важно, что сервис популярный и приносит прибыль, качественно обслуживает посетителей, а не то, построен он на PHP, MySQL или ColdFusion...

  1. 6 июля 2008 в 22:05 | #1

    Прикольно, хотя не мешало бы чуть поподробнее написать, а то есть несколько непонятных моментов 🙂

Комментирование отключено.
Developers.org.ua