? ? ?

Как работает vkontakte.ru?

Платформа

  • 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:

  • Что такое ВКонтакте.ру?
  • Как биться со мусором Вконтакте?
  • Как войти на веб-сайт «Вконтакте» в отсутствие отправки СМС?
  • Как верно защитить страничку «Вконтакте» от взлома?
  • Как сделать свою группу «Вконтакте»?
  • На каких веб-сайтах есть возможность добавить предмет в собственный перечень желаний «Вконтакте»?
  • Как удалить микроблог ВКонтакте?
  • Источник материала Интернет-сайт www.genon.ru

    Rambler's Top100