Пара слов о технической стороне «ВКонтакте»

30 Янв
2012

Решил недавно заняться доскональным разбором сайта «ВКонтакте». Пока напишу про четыре мелочи данного сайта. Начну с самых маленьких, продолжу несколько более крупными абзацами. Могу быть где-то неправым, так как не являюсь разработчиком ВКонтакте и не видел их код или структуру базы данных.

Если посмотреть ссылки, то не сложно понять. Напишите одну (первую, например) запись на стене и два-три комментария. Потом напишите еще один пост, у него будет id=4 (или другое значение, зависит от кол-ва комментариев).

Скорость работы


Лично для меня, это космическая скорость. Если представить, сколько происходит записей в секунду (в базу данных), и сколько всего там хранится… Сразу ясно, что без правильных (нормальных) индексов и курсоров, никакой скорости не было бы, даже при огромных ресурсах.

Распределение нагрузки


Ну, тут довольно просто:
1. При обращении к невыполняющимся сервером файлам (
.jpg
,
.png
,
.css
и прочим), запросы идут на сервера nginx.
2. Для файлов .php, имеющим название, длиннее, чем два символа (видимо, у них это взято за правило) сервер выбирается очень мудрёно рандомно: apache на lenny или squeeze. Их там несколько. Вот вам пример (пообновляйте несколько раз страницу).

Javascript


Очень много выполняется на клиентской стороне. Некоторые вещи можно было бы передоставить серверу. По поводу самого кода: да, конечно, он выглядит профессионально, но некоторые куски кода (изредка — весь файл), видимо, были написаны очень давно или по принципу «лишь бы заработало».

Собственная Система Управления Базами Данных


Не могу ничего сказать, так как не видел ни капли их серверного кода, который никак не увидеть на клиентской машине. Но по-моему, им собственная СУБД вообще не нужна. Разве что для показателя их крутости, что они всё могут.

Ссылки на изображения


Много для кого это уже не секрет, но можно разобрать ссылку на изображение. Возьмем в качестве экспиремента данное изображение (ссылку):

Папка на сервере
Названием основной папки служит ID пользователя, залившего изображение.
Названием следующего каталога, служит ID альбома. -14 используется для настенных изображений/заливок, будь то на паблике или на своей стене (возможно, где-то еще).

Префикс и название файла
Название состоит из префикса, служащего для обозначения, где использовать данную копию, и рандомного названия, длиной в восемь символов и/или цифр.

Список префиксов
1. s_ — для очень маленьких миниатюр
2. m_ — тоже миниатюра, только немного побольше
3. x_ — для уменьшенной копии в просмоторщике фотографий
4. z_ — для обычной копии (иногда является оригиналом, в зависимости от размера)
5. w_ — для оригинала (создается, если исходное изображение больше 1280х682px)

Еще создаются всякие малоиспользуемые копии с префиксом e_, t_ для мобильных версий и прочего.

Немного позже «заблогю» немного по логической структуре данного сайта.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх