Популярные ответы
											
											
										
								 
								
									
											
Похожие ответы
											
										
								 
							 
							
							
Платформа
- 
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: