Как Вконтакте работает?
                
Платформа 
- 
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. 
  
Источники:   
Дополнительно на Genon.ru: 
             |