@qqqaa

Как утроена файловая система ВКонтакте?

Заранее извиняюсь за возможные недочеты в вопросе, я еще новичок
Я недавно начал заниматься созданием своего сайта, и мне стала любопытна 1 вещь: если во ВКонтакте миллионы пользовательских аккаунтов, то, получается, что для каждого из них существует отдельная папка/файл на сервере, на который можно перейти через адресную строку, или же это реализовано через принудительное изменение состояния самой адресной строки через какие-нибудь скрипты (скажем, при помощи history api). Просто создавать кучу отдельных файлов для каждого пользователя было-бы, как минимум, неудобно. Пожалуйста, обьясните как это все работает, чтобы я в будущем не совершал ошибок
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 5
HemulGM
@HemulGM
Delphi Developer, сис. админ
Адресная строка давно не означает путь по "папкам" на сервере. Такое давно не используют, а используют роутинг.
Адресная строка разделяется на составные части, которые могут означать что угодно. Это зависит от фантазии разработчика. Например, https://site.ru/books/1
Здесь ты видишь основной домен site.ru, затем раздел books, а 1 - это номер книги.
По этому пути на сайте вообще может не быть ни файла 1, ни папки books. А будет запущен код роута books, который выполнит запрос к БД и достанет данные книги с id - 1.
Ответ написан
если во ВКонтакте миллионы пользовательских аккаунтов, то, получается, что для каждого из них существует отдельная папка/файл на сервере

Это предположение в корне неверно. Большинство веб-фреймворков сейчас позволяют настраивать механизмы обработки URL по шаблонам, и большинство страниц сайта генерируются, а не хранятся на диске готовыми.

Почитайте как вообще сейчас устроен веб-бэкенд у большинства сайтов. По сути это всё исполняющиеся на сервере программы (а на крупных сайтах - целый комплекс программ, расположенных на многих серверах и взаимодействующих между собой), которые могут сделать кучу разных действий (сходить в базу данных, переработать полученные от пользователя входные данные, прочитать файлы на диске, сделать запросы к другим сервисам) и в конечном счёте генерируют ответ в виде HTML-страницы, или же в машиночитаемом формате, который затем обрабатывается на клиентской стороне, например в формате JSON или XML.

Если очень-очень сильно упростить, то задача программиста, специализирующегося на backend-разработке - писать программы, которые принимают HTTP-запросы, обрабатывают их, и генерируют ответ в виде HTML/JSON/ещё чего-нибудь. Другое дело, что "обработка запроса" может быть очень сложной операцией и состоять из сотен более мелких.
Ответ написан
Jump
@Jump
Системный администратор со стажем.
получается, что для каждого из них существует отдельная папка/файл на сервере,
Нет конечно.
Есть такая штука - база данных. В ней и хранятся все данные.
Файловая система частный случай базы данных.

А что касается таких крупных проектов - там как правила не одна база данных, и сотни серверов в разных датацентрах.
Ответ написан
@402d
начинал с бейсика на УКНЦ в 1988
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Для понимания техники.
Есть еще термины "единая точка входа" и "роутинг".
Технические реализации могут быть разные.
Как конкретно именно у ВК не знаю. Может быть какая-то модификация nginx & fast-cgi

т.е. нет тысячи файлов. строка запроса разбирается серверным по и выполняются нужные действия.
Ответ написан
opium
@opium
Просто люблю качественно работать
Открой для себя базу данных чувак
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы