Где находится сервер вконтакте

Где находится сервер вконтакте

Сколько серверов используется для поддержания социальной сети "ВКонтакте"?

Людей, не знающих про социальную сеть "ВКонтакте" становится все меньше. Заинтересовавший сегодня вопрос — индексация данных поисковыми системами. На помощь пришел плагин SeoQuake для Мозиллы. Интересным оказалось большое количество страниц в индексе MSN. Впрочем, никаких интересных данных в индексе не нашлось.

Но другое, что заинтересовало — это имена серверов, в виде cs[ЧИСЛО].vkontakte.ru, где ЧИСЛО иногда было больше полутора тысяч. И тогда возник вопрос:
Сколько серверов используется для поддержания социальной сети "ВКонтакте"?

Точных данных никто не даст, знакомых участников проекта не нашлось, потому пришлось использовать приближенные методы.

Первое предположение — все сервера имеют имена указанные выше.
Второе предположение — не все имена указанного формата могут быть прописаны в DNS, потому для каждого имени определяем IP адрес.
Третье предположение — могут быть сервера, прописанные в dns, но реально не существующие. Чтобы их исключить — пробуем пинговать каждый сервер
Четвертое предположение — несколько имен может быть завязано на один адрес, потому нужно убирать дублирующиеся адреса.

Далее стал вопрос выбора верхнего предела чисел, подставляемых в шаблон имени сервера. Методом тыка было определено что при именах с числами около двух тысяч выдается все время один адрес, что наводит на мысль что все имена по шаблону, но не имеющие привязки к физическим серверам привзываются к одному из серверов. потому в качестве верхнего предела чисел при переборе имен было взято 2000.

На этом теоретические рассуждения пока заканчиваются. Далее была практика. Была написана программа которая в цикле перебирала имена серверов, определяла его IP адрес и проверяла доступность сервера попыткой пинга. Если сервер отвечал — адрес писался в файл. Осталось в полученном файле удалить дубликаты и посчитать получившееся количество адресов. Тут на помощь пришла консоль линукса

sort iplist.txt | uniq | wc -|

В результате получилось число — 1022. Т.е. 1022 публичных IP адреса связано с живыми серверами контакта. Возможно часть серверов имеет несколько IP. Но с другой стороны — возможно часть backend-ов публичных адресов не имеет (и это кажется даже более вероятным чем несколько IP на сервер). Потому думаю можно цифру использовать как первое приближение количества серверов.

Следующий вопрос — много это или мало. Берем данные из раздела "о сайте". 700 миллионов хитов в день. При равномерном распределении в пределах суток (чего не будет из-за того что аудитория русскоязычная и спит по большей части вся в одно время =) ), при равномерном распределении между 1022 серверами получаем около 8 страниц в секунду. С учетом объемов баз, прав доступа, динамических фрагментов страницы и пиковых нагрузок — весьма неплохо.

А теперь представьте 1000 компьютеров 🙂 В вашей анкете аватарка может хранится на одном компьютере, фотка из одного альбома — в другом, а контактная информация — в третьем 🙂

Все знают, что сердце ВКонтакте — дом Зингера на Невском проспекте. Сегодня мы расскажем и покажем, где находится и как выглядит его мозг — дата-центр ИЦВА.

Как построить дата-центр?

ЦОД (центр хранения и обработки данных, он же дата-центр) — это совокупность нескольких инфраструктурных систем, которые обеспечивают надёжность и отказоустойчивость работы серверного и сетевого оборудования.

Нельзя просто поставить кучу серверов и коммутаторов. Нужно создать и поддерживать оптимальные условия для их работы. Если Вы хотите построить свой ЦОД, Вам потребуются:

  • Система электроснабжения. Тут всё ясно — серверы работают на электричестве, и их много. Стало быть, обычной розетки на 220В, скорее всего, будет маловато.
  • Система охлаждения. Даже игровая видеокарта в продвинутом компьютере требует мощного кулера. Что уж говорить о сотнях и тысячах высокопроизводительных устройств.
  • Структурированная кабельная система (СКС). Что-то должно соединять все элементы в единое целое. Вам потребуется очень много кабелей и пылкая любовь к процессу их педантичной укладки.

Это основные системы «жизнеобеспечения», самый минимум, который нужен, чтобы просто запустить оборудование. Но для настоящего полноценного дата-центра нужно кое-что ещё. А именно:

  • Система пожаротушения. Важно позаботиться о том, чтобы случайная искра не превратила Ваш новенький ЦОД в руины.
  • Система мониторинга. Вы должны вовремя узнать, если что-то пошло не так.
  • Система контроля и управления доступом (СКУД). Не стоит оставлять двери открытыми для всех желающих.
  • Охранная сигнализация. На случай, если вместо пропуска кто-то решит использовать лом.
  • Система видеонаблюдения.

Мы верим, что у Вас получится отличный дата-центр. А пока посмотрим, как выглядит наш.

Добро пожаловать в ИЦВА

Почему ИЦВА, что за название такое? ИЦВА — это исследовательский центр высоковольтного аппаратостроения, который раньше находился в здании дата-центра и работал на благо энергетической промышленности. В наследство нам достались антиутопического вида ангары с потолками на уровне пятого этажа и загадочные помещения со стенами толщиной в метр.

В четырёх машинных залах размещены 640 стоек — это более 20000 серверов и более 200 коммутаторов, роутеры и DWDM-системы ёмкостью свыше 4 Тбит/c. Здесь установлен роутер ASR9000 с серийным номером 1 — в своё время это была первая коммерческая установка такого устройства во всём мире.

В пике дата-центр генерирует более 1 Тбит/c внешнего трафика. К нашим DWDM-системам подключены более 10 крупнейших международных провайдеров и международных центров обмена трафиком, а также около 40 крупных операторов РФ.

Электроснабжение

Все элементы системы электроснабжения резервируются как минимум N+1.

Буквально напротив здания дата-центра находится подстанция «Восточная», от которой питание подаётся в ЦОД по двум вводам 6кВ. Далее через распределительную подстанцию и автоматический ввод резерва питание подаётся по двум независимым вводам. Вот как это выглядит на схеме (для простоты — с одним машинным залом из четырёх):

Читайте также:  Список игр поддерживающих crossfire

Каждый узел дублируется и в норме работает под половинной нагрузкой. В случае аварии питание дойдёт до машинного зала в обход вышедшего из строя участка. Например, мы потеряли один 6кВ ввод:

Каждый узел дублируется и в норме работает под половинной нагрузкой. В случае аварии питание дойдёт до машинного зала в обход вышедшего из строя участка. Например, мы потеряли один 6кВ ввод:

Если всё совсем плохо и на вводы от магистральной сети рассчитывать не приходится, в дело вступают источники бесперебойного питания. Их задача — обеспечить питание машинных залов на то недолгое время, пока запускаются дизель-генераторные установки.

Дизель-генераторные установки (ДГУ) поддерживают жизнь в дата-центре в случае затяжной аварии или плановых работ в системе электроснабжения. Кроме топливных баков в самих ДГУ установлена автоматическая контейнерная заправочная станция большой ёмкости. Топливо из резервуара подаётся автоматически во все ДГУ, запас рассчитан минимум на сутки. В случае необходимости бензовоз с дизельным топливом прибудет в течение двух часов.

Каждый сервер и каждый коммутатор подключены к двум вводам питания. Как правило, в современном оборудовании такая возможность предусмотрена производителем. Для серверов с одним вводом питание дублируется с помощью вот такого устройства:

Система охлаждения

Для комфортной жизни оборудования в машинных залах нужно поддерживать определённый температурный диапазон. Вот почему компании по всему миру всё чаще строят свои ЦОДы где-нибудь неподалеку от полярного круга — в таких условиях можно использовать наружный воздух для охлаждения серверов. Это называется «фрикулинг», и такой подход по праву считается самым энергоэффективным (зачем тратить энергию на охлаждение тёплого воздуха, если можно сразу взять холодный?).

У нас фрикулинг тоже используется, правда, с некоторыми оговорками. Несмотря на легендарную питерскую прохладу, летом температура воздуха всё-таки иногда поднимается выше заветных 20-25°, и его приходится дополнительно охлаждать. В зимний период, напротив, воздух слишком холодный, чтобы его можно было сразу использовать. Кроме того, что серверы могут просто переохладиться, изменение температуры приведёт к сдвигу точки росы — а конденсат такому оборудованию противопоказан. Вдобавок, воздух при такой схеме попадает с улицы, а значит, его нужно дополнительно очищать.

Фрикулинг используется в одном машинном зале из четырёх, в остальных система охлаждения работает по классической схеме с использованием прецизионных кондиционеров.

Холодный воздух из камеры смешения или кондиционера через фальшпол или воздуховод подаётся в так называемый «холодный коридор». Это изолированное пространство между лицевыми сторонами двух рядов стоек. Вот такое:

С обратной стороны отработанный нагретый воздух попадает в «горячий коридор» — а оттуда отправляется обратно на охлаждение фреоном во внутренние блоки кондиционеров. Так достигается циркуляция чистого (без пыли) воздуха в машинном зале.

Структурированная кабельная система

Километры бережно уложенных проводов. Здесь не нужны слова.

Содержание статьи

Без малого 100 миллионов пользователей — такова аудитория ВКонтакте, которую
надо обслуживать. Быстро и без перебоев. Долгое время подробности технической
реализации ВКонтакте оставались секретом. Но недавно самая популярная в России
социальная сеть пролила немного света на то, как она все-таки устроена. В конце
октября в Москве состоялась конференция HighLoad++, на которой представители
ВКонтакте в лице Павла Дурова и Олега Илларионова, наконец, рассказали кое-что
об архитектуре социальной сети.

Парней буквально завалили вопросами по совершенно различным аспектам работы
ВКонтакте, в том числе и техническим. Еще бы. Легко представить нагрузку на
серверную часть сервиса: как много людей ты знаешь, которые не пользуются этой
социальной сетью? А сколько времени ты там проводишь, тратя бесценные часы своей
жизни на общение с друзьями, просмотр видео, игры, музыку? Математика довольно
проста: баснословное количество пользователей * масса проведенного времени на
ресурсе = запредельное количество запросов к веб-серверам и базе данных +
терабайты постоянно загружаемых и просматриваемых фотографий, видео и аудио.

Взаимодействие участников социальной сети происходит практически в режиме
реального времени: все друзья должны немедленно узнавать о том, что произошло с
каждым из участников. Сайт должен быть доступен 100% времени. Как это удается?

Статистика ВКонтакте

  • 99,5 миллионов учетных записей.
  • 40 миллионов активных пользователей во всем мире (сопоставимо с
    аудиторией интернета в России).
  • 11 миллиардов запросов в день.
  • 200 миллионов личных сообщений в день.
  • Видеопоток достигает 160Гбит/с.
  • Более 10 тысяч серверов, из которых только 32 — фронтенды на nginx
    (количество серверов с Apache неизвестно).
  • 30-40 разработчиков, 2 дизайнера, 5 системных администраторов, много
    людей в датацентрах.
  • Каждый день выходит из строя около 10 жестких дисков.

Платформа

Для нас, конечно, особый интерес представляет именно архитектура проекта: как
взаимодействуют основные компоненты системы, какие собственные разработки
потребовались, какими трюками пришлось воспользоваться. Но прежде, чем перейти к
ней, необходимо ознакомиться с базовыми вещами — используемыми технологиями и
продуктами.

В качестве основной операционной системы используется Debian Linux — решение,
проверенное временем, один из самых старых и стабильных современных
дистрибутивов. Для балансировки нагрузки между серверами приложений используется
HTTP-сервер nginx, работающий в режиме reverse proxy. В его обязанности входит
держать соединение с браузером пользователя и передавать запросы серверам,
ответственным за исполнение PHP-кода, а также контролировать попадание
результата обратно в браузер. PHP-код исполняется посредством модуля mod_php для
Apache — альтернативных вариантов довольно много, особенно на основе протокола
FastCGI, но руководство ВКонтакте пошло по более консервативному пути в этом
вопросе, воспользовавшись самым проверенным временем решением. Никаких особых
систем оптимизации производительности PHP-кода не используется (например, в
Facebook написали свой компилятор из PHP в C под названием HipHop), единственной
внешней оптимизацией является кэширование оп-кода посредством всем доступного
решения XCache.

Читайте также:  Обратная польская запись java

Ситуация с хранением данных выглядит достаточно размыто: с одной стороны,
активно используется собственная система управления базами данных, написанная на
C и созданная "лучшими умами" России, с другой — часто упоминалась MySQL в роли
основного хранилища. Подробнее про собственную базу данных ВКонтакте я расскажу
ниже. Говоря о хранении данных, нельзя не упомянуть о таком важном аспекте, как
кэширование часто используемой информации (расположение её в оперативной памяти
для быстрого доступа). Для этого используется очень популярный продукт в этой
области — memcached. Если ты не слышал: эта система позволяет осуществлять очень
простые атомарные операции, такие как расположение и получение произвольных
данных по ключу. Основной фишкой является молниеносно быстрый доступ и
возможность легкого объединения оперативной памяти большого количества серверов
в общий массив для временного хранения "горячих" данных.

Сторонние проекты, не являющиеся ключевыми для ВКонтакте, часто реализуются
либо с использованием довольно экзотических решений, либо, наоборот, на самых
простых технологиях. Например, сервис мгновенного обмена сообщениями реализован
на node.js (подробнее об этой разработке ты можешь прочитать в статье "Серверный
JavaScript" в ][
08/2010) с использованием протокола XMPP aka Jabber (мы еще к нему
вернемся). Конвертирование видео реализовано на самой простой и эффективной
библиотеке — ffmpeg, на ней же работает очень популярный видео-плеер VLC.

Основные используемые технологии

  • Debian Linux —
    основная операционная система
  • nginx —
    балансировка нагрузки
  • PHP +
    XCache
  • Apache + mod_php
  • memcached
  • MySQL
  • Собственная СУБД на C, созданная "лучшими умами" России
  • node.js — прослойка
    для реализации протокола XMPP, живет за HAProxy (haproxy.1wt.eu)
  • xfs — файловая система
    для хранения изображений и отдачи пользователю
  • ffmpeg —
    конвертирование видео

Архитектура

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

Балансировка нагрузки между серверами происходит по многоуровневой схеме,
которая включает в себя балансировку на уровне DNS (домен обслуживается с
помощью 32 IP-адресов), а также маршрутизацию запросов внутри системы, причем
разные сервера используются для разных типов запросов. Например, генерация
страниц с новостями (теперь это принято называть микроблогом) работает по хитрой
схеме, использующей возможности протокола memcached по параллельной отправке
запросов на получение данных по большому количеству ключей. В случае отсутствия
данных в кэше, аналогичный запрос отправляется системе хранения данных, а
полученные результаты подвергаются сортировке, фильтрации и отбрасыванию лишнего
уже на уровне PHP-кода. Похожим образом этот функционал работает и в Facebook
(они недавно обменивались опытом), только вместо собственной СУБД в Facebook
используют MySQL.

В стенах ВКонтакте было разработано большое количество софта, который более
точно удовлетворяет потребностям проекта, чем доступные opensource и
коммерческие решения. Помимо упоминавшейся собственной СУБД у них есть система
мониторинга с уведомлением по СМС (Павел сам помогал верстать интерфейс),
автоматическая система тестирования кода и анализаторы статистики и логов.

В проекте используется достаточно мощное оборудование, ориентировочно были
названы следующие характеристики серверов:

  • 8-ядерные процессоры Intel (по два на сервер, видимо);
  • 64 Гб оперативной памяти;
  • 8 жестких дисков;
  • RAID не используется (репликация и резервное копирование осуществляется
    на программном уровне).

Примечательно, что сервера не брендированные, а собираются специализированной
российской компанией. Сейчас оборудование проекта расположено в 4 датацентрах в
Санкт-Петербурге и Москве, причем вся основная база данных располагается в
питерском датацентре, а в Москове хостится только аудио и видео. В планах
сделать репликацию базы данных с другим датацентром в Ленинградской области, а
также использовать Content Delivery Network для повышения скорости скачивания
медийного контента в регионах.

Многие проекты, сталкивающиеся с большим количеством фотографий, часто
изобретают собственные решения по их хранению и отдаче пользователям. Об этом
был первый вопрос, заданный Павлу из зала: "Как вы храните изображения?" — "На
дисках!". Так или иначе, представители ВКонтакте заявили, что вся эта куча
фотографий всех цветов и размеров просто хранится и отдается с файловой системы
(используют xfs) большого количества серверов, без дополнительных изысков.
Смущает разве что тот факт, что у других крупных проектов такой подход не
сработал — наверное, они не знали волшебного слова :).

Не менее волшебной представляется та самая собственная база данных на C.
Этому продукту, пожалуй, было уделено основное внимание аудитории, но при этом
почти никаких подробностей о том, что он, собственно говоря, собой представляет,
так и не было обнародовано. Известно, что СУБД разработана "лучшими умами"
России, победителями олимпиад и конкурсов TopCoder, а также что она используется
в самых высоконагруженных сервисах ВКонтакте:

  • Личные сообщения
  • Сообщения на стенах
  • Статусы
  • Поиск
  • Приватность
  • Списки друзей

В отличие от MySQL используется нереляционная модель данных, а большинство
операций осуществляется в оперативной памяти. Интерфейс доступа представляет
собой расширенный протокол memcached. Специальным образом составленные ключи
возвращают результаты сложных запросов (чаще всего специфичных для конкретного
сервиса).

Читайте также:  Как сбросить ноутбук toshiba до заводских настроек

Система проектировалась с учетом возможности кластеризации и автоматической
репликации данных. Разработчики хотели бы сделать из данной системы
универсальную СУБД и опубликовать под GPL, но пока не получается из-за высокой
степени интеграции с остальными сервисами.

Интересные факты о ВКонтакте

  • Процесс разработки близок к методологии Agile с недельными
    итерациями (циклами), в рамках которых проходят все этапы разработки:
    планирование, анализ требований, проектирование, разработка и
    тестирование.
  • Ядро операционной системы модифицировано (на предмет работы с
    памятью), есть своя пакетная база для Debian.
  • Фотографии загружаются на два жестких диска одного сервера
    одновременно, после чего создается резервная копия на другом сервере.
  • Есть много доработок над memcached, в.т.ч. для более стабильного и
    длительного размещения объектов в памяти; есть даже версия,
    обеспечивающая сохранность данных.
  • Фотографии не удаляются для минимизации фрагментации.
  • Решения о развитии проекта принимают Павел Дуров и Андрей Рогозов,
    ответственность за сервисы — на них и на реализовавшем его разработчике.
  • Павел Дуров откладывал деньги на хостинг с 1 курса :).

Подпроекты

Сервисы аудио и видео являются побочными для социальной сети, на них
создатели проекта особо не фокусируются. В основном это связано с тем, что они
редко коррелируют с основной целью использования социальной сети — общением, а
также создают большое количество проблем. Видеотрафик — основная статья расходов
проекта, плюс всем известные проблемы с нелегальным контентом и претензиями
правообладателей. 1000—1500 серверов используются для перекодирования видео, на
них же оно и хранится. Медиа-файлы банятся по хэшу при удалении по просьбе
правообладателей, но это неэффективно и планируется усовершенствовать этот
механизм. Очевидно, речь идет о разработке более интеллектуального алгоритма
распознавания аудио- и видео-контента по тегам, как это, к примеру, реализовано
в YouTube, где загруженный видеоролик, нарушающий лицензию, может быть
автоматически удален уже через несколько минут после загрузки.

Как известно, некоторое время назад появилась возможность общаться на
ВКонтакте через протокол Jabber (он же XMPP). Протокол совершенно открытый и
существует масса opensource реализаций. По ряду причин (среди которых проблемы
интеграции с остальными сервисами ВКонтакте) было решено за месяц создать
собственный сервер, представляющий собой прослойку между внутренними сервисами
ВКонтакте и реализацией XMPP протокола. Реализован он на node.js — выбор
обусловлен тем, что JavaScript знают практически все разработчики проекта, к
тому же это хороший набор инструментов для реализации задачи. Сложным моментом
стала работа с большими контакт-листами. У многих пользователей количество
друзей ВКонтакте измеряется сотнями и тысячами, высока активность смены
статусов: люди появляются и исчезают из онлайна чаще, чем в других аналогичных
ситуациях. К тому же необходимо было реализовать тесную интеграцию с внутренней
системой обмена личными сообщениями ВКонтакте. В результате на сервисе 60-80
тысяч человек онлайн, в пике — 150 тысяч. TCP/HTTP-балансировщик нагрузки
HAProxy обрабатывает входящие соединения и используется для распределения
запросов по серверам, а также развертывания новых версий.

При выборе системы хранения данных думали о нереляционных системах хранения
данных (в частности, о MongoDB), но в итоге решили воспользоваться привычной
MySQL. Сервис функционирует на 5-ти серверах разной конфигурации, на каждом из
которых работает код на node.js (по 4 процесса на сервер), а на трех самых
мощных — еще и MySQL. Интересной особенностью является отсутствие связи между
группами друзей в XMPP с группами друзей на сайте — сделано по просьбе
пользователей, которые не хотели, чтобы их друзья из-за плеча видели, в какой
группе они находятся.

Важным подпроектом является также интеграция с внешними ресурсами, которую в
условиях высоконагруженного сервиса реализовать далеко не так просто. Все чаще
на страницах сторонних проектов можно увидеть виджеты "Мне нравится",
позволяющими быстро поделиться интересным постом со своими друзьями, а также
небольшие блоки "Мы ВКонтакте" с данными о пользователях внутри привязанной
группы. Основные шаги, предпринятые в этом направлении, с небольшими
комментариями:

  • Максимальная кроссбраузерность для виджетов и IFrame-приложений на
    основе библиотек easyXDM и fastXDM, обеспечивающих взаимодействие между
    сторонним ресурсом и программным интерфейсом ВКонтакте. Таким образом была
    решена проблема кроссдоменного взаимодействия и вопрос работы во всех
    браузерах.
  • Кросс-постинг статусов в Twitter, реализованный с помощью очередей
    запросов.
  • Кнопка "поделиться с друзьями", поддерживающая openGraph-теги и
    автоматически подбирающая подходящую иллюстрацию (путем сравнивания
    содержимого тега и атрибутов alt у изображений.
  • Возможность загрузки видео через сторонние видео-хостинги (YouTube,
    RuTube, Vimeo, и т.д.).

Не секрет

Завеса тайны насчет технической реализации ВКонтакте была немного развеяна,
опубликовано куча интересных аспектов, но все же многие моменты по-прежнему
остаются секретом. Возможно, в будущем появится более детальная информация о
собственной СУБД ВКонтакте, которая, как оказалось, является ключом к решению
всех самых сложных моментов в масштабируемости системы. Сейчас, как бы кто ни
относился к ВКонтакте, сервис является очень интересным с точки зрения
построения высоконагруженных систем. Все-таки 11 миллиардов запросов в день,
высочайший аптайм и почти 100 миллионов пользователей — дорогого стоят.

Warning

Далеко не все крупные проекты публично раскрывают аспекты построения
архитектуры. Даже примерная информация о том, что у них происходит и как они
работают, часто держится в секрете. Источником информации чаще всего
оказываются либо выступления представителей проектов на конференциях, либо
различные интервью/публикации сотрудников. Информация для этого материала
была собрана автором из этих же источников и не является официально
подтвержденной со стороны ВКонтакте.

Ссылка на основную публикацию
Где автокад хранит автосохранение
Данная функция существенно облегчает работу в случае сбоев программы и ошибок в работе. По умолчанию, автосохранение в AutoCAD сохраняет файл...
Виндовс 10 видит принтер но не печатает
Windows 10 не видит принтер Плановая переустановка Виндовс 7 на 10: мошенники против пенсионеров Полноэкранная реклама от Windows - раздражающая...
Внутренняя программная ошибка src defaultfontmetrics cpp 55
Abbyy Finereader – программа для распознавания текста с изображениями. Источником картинок, как правило, является сканер или МФУ. Прямо из окна...
Где на жестком диске написан объем
Мы зарегистрировали подозрительный трафик, исходящий из вашей сети. С помощью этой страницы мы сможем определить, что запросы отправляете именно вы,...
Adblock detector