Самая популярная социальная сеть в рунете пролила немного света на то, как же она работает. Представители проекта в лице Павла Дурова и Олега Илларионова на конференции 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 на данный момент не используется, но в планах есть
- Резервное копирование данных происходит ежедневно и инкрементально