28988 авторов и 62 редактора ответили на 85259 вопросов,
разместив 135226 ссылок на 43432 сайта, присоединяйтесь!

Какая архитектура сайта vkontakte.ru?

РедактироватьВ избранноеПечать

Платформа

  • Debian Linux — основная операционная система

  • nginx — балансировка нагрузки

  • PHP + XCache

  • Apache + mod php

  • memcached

  • MySQL

  • Собственная СУБД на C, созданная «лучшими умами» России

  • node.js — прослойка для реализации XMPP, живет за HAProxy

  • Изображения отдаются просто с файловой системы xfs

  • ffmpeg — конвертирование видео

Статистика

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

Архитектура

  • Cервера многофункциональны и используются одновременно в нескольких ролях:

  • Перебрасывание полуавтоматическое
  • Требуется перезапускать daemon''ы
    • Генерация страниц с новостями (микроблоги) происходит очень похожим образом с Facebook, основное отличие — использование собственной СУБД вместо MySQL
    • При балансировке нагрузки используются:
  • Взвешенный round robin внутри системы
  • Разные сервера для разных типов запросов
  • Балансировка на уровне ДНС на 32 IP-адреса
    • Большая часть внутреннего софта написано самостоятельно, в том числе:
  • Собственная СУБД (см. ниже)
  • Мониторинг с уведомлением по СМС
  • Автоматическая система тестирования кода
  • Анализаторы статистики и логов
    • Мощные сервера:
  • 8-ядерные процессоры Intel (по два на сервер)
  • 64Гб оперативной памяти
  • 8 жестких дисков (соответственно скорее всего корпуса 2-3U)
  • RAID не используется
  • Не брендированные, собирает компания ТехноОкта
    • Вычислительные мощности серверов используются менее, чем на 20%
    • Сейчас проект расположен в 4 датацентрах в Санкт-Петербурге и Москве, причем:
  • Вся основная база данных располагается в одном датацентре в Санкт-Петербурге
  • В Московских датацентрах только аудио и видео
  • В планах сделать репликацию базы данных в другой датацентр в ленинградской области
    • CDN на данный момент не используется, но в планах есть
    • Резервное копирование данных происходит ежедневно и инкрементально

    База данных на C

    • Разработана «лучшими умами» России, победителями олимпиад и конкурсов топкодер; озвучили даже имена этих «героев» Вконтакте:
  • Андрей Лопатин
  • Николай Дуров
  • Арсений Смирнов
  • Алексей Левин
    • Используется в огромном количестве сервисов:
  • Личные сообщения
  • Сообщения на стенах
  • Статусы
  • Поиск
  • Приватность
  • Списки друзей
    • Нереляционная модель данных
    • Большинство операций осуществляется в оперативной памяти
    • Интерфейс доступа представляет собой расширенный протокол memcached, специальным образом составленные ключи возвращают результаты сложных запросов (чаще всего специфичных для конкретного сервиса)
    • Хотели бы сделать из данной системы универсальную СУБД и опубликовать под GPL, но пока не получается из-за высокой степени интеграции с остальными сервисами
    • Кластеризация осуществляется легко
    • Есть репликация

    Аудио и видео


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


    Интеграция со внешними ресурсами

     

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

    • максимальная кроссбраузерность для виджетов на основе библиотек easyXDM и fastXDM;
    • кросс-постинг статусов в Twitter, реализованный с помощью очередей запросов;
    • кнопка «поделиться с друзьями», поддерживающая openGraph теги и автоматически подбирающая подходящую иллюстрацию (путем сравнивание содержимых тега <title> и атрибутов alt у изображений, чуть ли не побуквенно);
    • возможность загрузки видео через сторонние видео-хостинги (YouTube, RuTube, Vimeo, и.т.д.), открыты к интеграции с другими.

    Интересные факты

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

    Итоги


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

     

    Источники:  

    • insight-it.ru — архитектура Вконтакте;
    • d3scene.ru — архитектура ВК;
    • vkbag.ru — Павел Дуров рассказал об архитектуре ВКонтакте на HighLoad++ 2010.

    Дополнительно на Genon.ru:

    Последнее редактирование ответа: 03.11.2010

    • Оставить отзыв

      Оставить отзыв

    РедактироватьВ избранноеПечать

    «Какая архитектура сайта vkontakte.ru»

    В других поисковых системах:

    GoogleЯndexRamblerВикипедия

    В соответствии с пользовательским соглашением администрация не несет ответственности за содержание материалов, которые размещают пользователи. Для урегулирования спорных вопросов и претензий Вы можете связаться с администрацией сайта genon.ru. Размещенные на сайте материалы могут содержать информацию, предназначенную для пользователей старше 18 лет, согласно Федерального закона №436-ФЗ от 29.12.2010 года "О защите детей от информации, причиняющей вред их здоровью и развитию". Обращение к пользователям 18+.