Архитектура Вконтакте. Конспект доклада на Highload

Самая популярная социальная сеть в рунете пролила немного света на то, как же она работает. Представители проекта в лице Павла Дурова и Олега Илларионова на конференции HighLoad++ ответили на шквал вопросов по совершенно разным аспектам работы Вконтакте, в том числе и техническим. Спешу поделиться своим взглядом на архитектуру проекта по результатам данного выступления.

Коллеги из Insight-IT побывали на конференции по высоким нагрузкам и законспектировали доклад Вконтакта про свою внутреннюю архитектуру

Самая популярная социальная сеть в рунете пролила немного света на то, как же она работает. Представители проекта в лице Павла Дурова и Олега Илларионова на конференции HighLoad++ ответили на шквал вопросов по совершенно разным аспектам работы Вконтакте, в том числе и техническим. Спешу поделиться своим взглядом на архитектуру проекта по результатам данного выступления.

Платформа

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

Полная версия текста на сайте Insight-IT