Платформа
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 теги и автоматом подбирающая подходящую иллюстрацию (методом сравнивание содержимых тега и атрибутов alt у изображений, чуть не побуквенно);
возможность загрузки видео через посторонние видео-хостинги (YouTube, RuTube, Vimeo, и.т.д.), открыты к интеграции с другими.
Достойные внимания факты
Процесс разработки близок к Agile, с недельными итерациями
Ядро операционной системы модифицированно (на предмет работы с памятью), есть своя пакетная база для Debian
Фото загружаются на два жестких диска 1-го сервера вместе с этим, после этого создается запасная копия на другом сервере
Есть много доработок над memcached, в.т.ч. для более размеренного и долгого размещения объектов в памяти; есть даже persistent версия
Фото не удаляются для минимизации фрагментации
Решения о развитии проекта принимают Павел Дуров и Андрей Рогозов, ответственность за сервисы — на их и на реализовавшем его разработчике
Павел Дуров откладывал деньги на хостинг с 1 курса.
Итоги
В целом ВКонтакте развивается в сторону ускорения распространения информацию снутри сети. Ценности поменялись в этом направлении довольно не так давно, этим обосновано, напимер, перенос выхода почтового сервиса Вконтакте, о котором очень интенсивно говорили когда появилась возможность забивать для себя текстовые URL. На данный момент этот подпроект имеет маленький ценность и ожидает собственного часа, когда они сумеют предложить что-то более комфортное и резвое, чем Gmail.
Источники:
insight-it.ru — архитектура Вконтакте;
d3scene.ru — архитектура ВК;
vkbag.ru — Павел Дуров поведал об архитектуре ВКонтакте на HighLoad++ 2010.
Дополнительно на New-Best.com:
Что такое ВКонтакте.ру?
Как биться со мусором Вконтакте?
Как войти на веб-сайт «Вконтакте» в отсутствие отправки СМС?
Как верно защитить страничку «Вконтакте» от взлома?
Как сделать свою группу «Вконтакте»?
На каких веб-сайтах есть возможность добавить предмет в собственный перечень желаний «Вконтакте»?
Как удалить микроблог ВКонтакте?
Array