25900 авторів і 91 редактор відповіли на 98952 питання,
розмістивши 129771 посилання на 81900 сайтів, приєднуйтесь!

Реклама партнерів:

Яка архітектура сайту 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
    • Фотографії завантажуються на два жорсткі диски одного сервера одночасно, після чого створюється резервна копія на іншому сервері
    • Є багато доробок над memcached, в.т.ч. для більш стабільного і тривалого розміщення об'єктів в пам'яті-є навіть persistent версія
    • Фотографії не видаляються для мінімізації фрагментації
    • Рішення про розвиток проекту беруть Павло Дуров та Андрій Рогозів, відповідальність за сервіси - на них і на реалізовані його розробника
    • Павло Дуров відкладав гроші на хостинг з 1 курсу.

    Підсумки


    В цілому ВКонтакте розвивається у бік збільшення швидкості поширення інформацію всередині мережі. Пріоритети помінялися в цьому напрямку досить недавно, цим обумовлено, напимер, перенесення виходу поштового сервісу Вконтакті, про який дуже активно говорили коли з'явилася можливість забивати собі текстові URL. Зараз цей підпроект має низький пріоритет і чекає свого часу, коли вони зможуть запропонувати щось більш зручне і швидке, ніж Gmail.

    Джерела:

    • insight-it.ru - архітектура Вконтакте;
    • d3scene.ru - архітектура ВК;
    • vkbag.ru - Павло Дуров розповів про архітектуру ВКонтакте на HighLoad ++ 2010.

    Додатково:

    Реклама партнерів:

    РедагуватиУ обранеДрук

    Схожі питання


    «Яка архітектура сайту vkontakte.ru?»

    В інших пошукових системах:

    GoogleЯndexRamblerВікіпедія

    » » Яка архітектура сайту vkontakte.ru?