Проект Open Compute: жизнь кнопки «like»

Задавались ли вы когда-нибудь вопросом, что происходит между нажатием кнопки «Home» на вашей странице в Facebook и моментом, когда вы видите свежие посты друзей – тексты, новостные ссылки, фотографии детей, видео с котиками – а также рекламные баннеры рядом с новостной лентой? Если да, то вы, наконец, получите ответ на свой вопрос. Если же нет, то слова Джейсона Тейлора заставят вас задуматься над тем, почему этот вопрос раньше не приходил вам в голову.

Как только вы нажимаете на кнопку «Home», запрос передается на сервер под названием «Web-tier». Сервер обращается к кэшу и проверяет, исходит ли запрос от авторизованного пользователя. В случае положительного ответа, кэш отправляет информацию серверу Web-tier, который в свою очередь направляет запрос на стойку с 40 серверами, называемую «Multi-feed rack», в которой хранятся сведения обо всей активности пользователя Facebook за последние два дня. Приложение-агрегатор, работающее на одном из этих серверов (такое приложение запущено на каждом из них) отправляет параллельные запросы на все 40 серверов, опрашивая их с целью получения свежих постов от каждого из ваших друзей. Затем, агрегатор составляет рейтинг полученной информации на основе списка ваших друзей и передает верхние 40 постов обратно на сервер Web-tier. Web-tier направляет кэшу еще один запрос с целью получения данных, которые необходимы для отображения постов: текст, комментарии, число «лайков», ссылки на фото, имена авторов и т.д. Вся эта информация, вероятнее всего, хранится в кэше (соотношение кэш/попадание для Facebook находится на уровне 96%). Если чего-то не хватает, запрос отправляется на сервер баз данных. Наконец, программное обеспечение получает объявления с сервера объявлений, совершает еще несколько обращений к кэшу и выводит полученный результат на экран.

Прошла всего секунда

Джейсон Тейлор работает руководителем отдела инженерии и анализа производительности в Facebook. Его работа заключается в том, чтобы вы могли как можно быстрее получить доступ к сделанным вашими друзьями глупым фотографиям еды. Он также следит за тем, чтобы сервера Facebook всегда обладали достаточным уровнем производительности. Еще одной его задачей является слежение за тем, чтобы на покупку оборудования не было потрачено ни одного лишнего цента, и чтобы компания максимально эффективно использовала все затраченные на инфраструктуру средства и каждый сожженный киловатт электроэнергии. Тейлор рассказал о своей работе на январской конференции проекта Open Compute в Санта-Кларе, Калифорния.

Постоянная высокая нагрузка

Тейлор работает 24 часа в сутки. Большая часть серверов Facebook расположена в США, в то время как 82% пользователей компании живут в других странах. Это означает, что «наши сервера находятся под высокой нагрузкой в течение 14-16 часов в сутки». Большая часть европейских пользователей заходит на Facebook примерно в 9 вечера по московскому времени, когда начинается рост траффика. Пик наблюдается в 10 часов, и нагрузка остается высокой примерно до 5 утра. Траффик с восточного побережья США находится на пике в период между 10 часами вечера и 4 часами утра. Более низкая пиковая нагрузка наблюдается в средней части США, где используется меньше компьютеров, так что с 4 до 7 часов утра наблюдается небольшое падение траффика, пока в дело не вступит Азия.

Джейсон Тейлор, руководитель отдела инженерии и анализа производительности в Facebook.

Сервера компании находятся под постоянной высокой нагрузкой. В социальной сети зарегистрировано более миллиарда пользователей, которые каждый день загружают 320 млн фотографий, публикуют посты, комментируют и нажимают «Like» 12,2 млрд раз в день, заводят 140 млн друзей и совершают «чекин» в 17 млрд мест. По данным на середину января, в дата-центрах Facebook хранилось 212 млрд фотографий.

В течение первых 9 месяцев 2012 г. компания потратила $1 млрд на дата-центры и установленное в них оборудование. Так что, слова Тейлора вовсе не кажутся странными: «Мы проводим много времени, размышляя о вопросах эффективности и снижения расходов». Вот как Тейлор видит свой идеальный мир: «В идеальном мире каждый сервис Facebook использует 100% выделяемого для его работы аппаратного обеспечения». До этого компании еще далеко, но она отважно сражается за попадание в этот мир.

Пять типов серверов Facebook

В настоящее время, компания использует пять типов серверов. «Инженеры Facebook могут получить в свое распоряжение любой сервер, если он относится к одному из этих пяти типов», - говорит Тейлор. Сервера были разработаны специалистами Facebook, каждый из них оптимизирован для выполнения определенного класса задач и избавлен от всего лишнего. Сервера типа Web-tier обладают большой процессорной мощностью; сервера баз данных оснащаются большим объемом флэш-памяти; сервера типа Feed имеют большой объем CPU и ОЗУ; сервера типа Hadoop имеют большой объем дискового пространства и CPU; сервера типа Haystack (сервера фотографий) оптимизированы на основе показателя доллар-за-гигабайт.

Все сервера, за исключением Feed, отвечают в точности за те задачи, которые на них возложены. В случае с Feed все обстоит несколько сложнее: им приходится делать гораздо больше, нежели просто генерировать новостную ленту (newsfeed).

Зачем ограничивать инженеров и разрешать им использовать только пять типов серверов? Стоимость одного сервера существенно снижается, когда выполняется одновременная закупка нескольких тысяч однотипных единиц оборудования. Поставщики будут до последнего сражаться друг с другом за такого крупного клиента, как Facebook. Еще одной причиной является легкость перемещения серверов. Легко перекинуть сервер с одного сервиса на другой в случае, если это необходимо. Флотилия однотипных серверов также упрощает жизнь с точки зрения ремонта, драйверов, отладки и т.д. Компании Facebook требуется всего лишь несколько специалистов-техников для обслуживания огромного количества серверов. Наконец, под рукой всегда находится достаточный объем оборудования на случай возникновения непредвиденной ситуации.

Так в чем же проблема? Проблема в том, что Facebook состоит более чем из пяти сервисов. «У нас задействовано 40 крупных сервисов и около 200 небольших», - говорит Тейлор. «Дело в том, что не каждый сервис вписывается в используемые нами пять типов серверов».

Говорит ли это о том, что Facebook достиг потолка производительности?

Представляем вам составную стойку

Сервисы не только не вписываются в существующие типы серверов, они еще и постоянно меняются. Вместе с изменениями сервисов могут произойти изменения требований к аппаратному обеспечению. Вот почему Open Compute Project (сообщество по разработке открытого аппаратного обеспечения компании Facebook) в настоящее время активно работает над проектом составной стойкистойки, в которой каждый отдельный компонент, будь то ОЗУ, CPU, подсистема ввода-вывода жестких дисков, жесткие диски, подсистема ввода-вывода флэш-памяти, флэш-память и другие компоненты могут масштабироваться независимо.

Основное внимание в рамках разработки уделяется серверам типа Feed, или Multi-feed. Другие типы серверов, такие, как фото-сервер или Web-tier, ответственны только за одно «бутылочное горлышко» - так Тейлор называет критически-важные ресурсы. С целью масштабирования свободного пространства для хранения фотографий, компания может просто купить дополнительные фото-сервера, не заботясь о потенциально низкой загрузке CPU: в серверах данного типа используется небольшое число процессоров.

Причина использования составной стойки, а не составного сервера, заключается в том, что программное обеспечение Facebook управляет аппаратными ресурсами на уровне стойки. Стойка является минимальной производственной единицей в Facebook.

Стойка с серверами типа Multi-feed состоит из 80 процессоров (640 ядер), 5,8ТБ RAM, 80ТБ дискового пространства и 30ТБ флэш-памяти. В составной стойке каждый ресурс рассматривается в качестве узла. К примеру, вычислительный узел состоит из двух процессоров, 16 слотов DIMM, не имеет жесткого диска (сетевая загрузка) и оснащается производительным сетевым контроллером. Вместо замены сервера каждые 3-4 года (типичный цикл обновления аппаратного обеспечения), Facebook сможет производить замену чаще (что лучше соответствует закону Мура), примерно каждые два года. Дело в том, что за три года производительность CPU утраивается, в то время, как показатели для остальных «бутылочных горлышек» остаются прежними. «Если оценить энергопотребление данных серверов, становится понятно, что сервера имеет смысл менять каждые 2-2,5 года, так что мы хотели бы иметь возможность менять вычислительные узлы независимо от остальных компонентов стойки», - говорит Тейлор.

Та же самая схема применяется и к остальным ресурсам в стойке, в которой будет устанавливаться ОЗУ на салазках, флэш-память на салазках, жесткие диски на салазках и т.д.  Данные типы узлов будут служить 4-6 лет, говорит Тейлор. «Нет причин, по которым данные аппаратные компоненты (за исключением жестких дисков) выходили бы из строя в течение 2-3 лет, соответствующих циклу обновления оборудования, так что мы хотим использовать их дольше».

Хорошо иметь надежных друзей

На конференции Open Compute компании Intel и Facebook объявили о совместной работе над воплощением проекта составной стойки в жизнь. Тайваньский производитель аппаратного обеспечения, Quanta Computer, продемонстрировал механический прототип архитектуры. Данный прототип поддерживает процессоры Intel Xeon и узлы следующего поколения под названием Atom System-on-Chip (SoC). В прототипе используется технология кремниевой фотоники от Intel и контроллер Intel Ethernet для сетевого ввода-вывода.

В настоящее время, составная стойка является концептом и прототипом, но благодаря привлечению к работе колоссальных инженерных ресурсов Intel и обладающих широким кругозором специалистов Facebook, первая поставка стоек из Тайваня в дата-центр, расположенный в Северной Каролине или в Швеции, может состояться уже совсем скоро. 

Теги:
#Опыт ЦОД

Оставить комментарий

Ваше имя:
E-mail:
(Не обязательно)
Текст комментария:
Введите код с картинки:  

Дополнительные материалы

ПРОФЕССИОНАЛЬНОЕ обучение проектированию систем вентиляции и кондиционирования

Можно ли зимой включать кондиционер на обогрев

Вытяжка в стену: как подобрать и правильно сделать своими руками

3 способа сделать увлажнитель воздуха для квартиры и дома своими руками

Всё самое важное про турбодефлекторы: что такое, принцип работы, внешний вид, как подобрать

Вентиляция в квартире: самое полное руководство простым языком

Встраиваемая вытяжка на кухне: важные нюансы по устройству и подключению

Вытяжка в дачном туалете: как сделать правильно своими руками