Перейти к основному содержимому

Как работает сервер

·547 слов·3 минут
Оглавление

В этом посте вы узнаете:

  • что такое веб-сервер
  • зачем веб-серверу порты
  • что такое балансер
  • зачем нужны датацентры

В этом посте рассмотрим, что скрывается за сервером и как он обрабатывает запросы.

image.png

Сервер — компьютер, который обрабатывает запросы клиентов. Он предоставляет различные типы контента, такие как изображения, видеоролики и веб-страницы.

На сервере могут работать различные программы, включая веб-сервер.

Веб-сервер
#

Веб-сервер — программа, которая принимает запросы и возвращает ответы веб-браузеру в формате HTML-разметки. В сети Интернет миллионы веб-серверов.

Все веб-серверы условно можно разделить на два типа:

  1. Stateless (без сохранения состояния). Каждый запрос от клиента обрабатывается как новый. Это можно представить, если вспомнить рыбку Дори из мультфильма “В поисках Немо”. У нее была плохая память, поэтому она могла переживать одни и те же события каждый раз, будто это происходит впервые.

  2. Stateful (с сохранением состояния). Сервер может запоминать информацию о клиенте. Например, при входе в профиль в социальной сети пользователю предоставляется возможность редактирования информации в своем профиле. Это осуществляется благодаря серверу с хранилищем данных.

Чаще всего в качестве хранилища данных для сервера используется база данных, которая находится на другом сервере. Сервер взаимодействует с базой данных по специальному протоколу, отличному от HTTP. В этом случае сервер становится клиентом для базы данных.

Таким образом, взаимодействие между серверами и клиентами может быть цикличным: для кого-то ты являешься сервером, а для кого-то всего лишь еще одним клиентом :)

image.png

Веб-сервер и порты
#

Вернемся к URL’у, который запрашивает клиент. Я добавил еще один компонент — порт.

image.png

URL-адрес, который запрашивает клиент, содержит порт — дверь в сервер для обмена информацией. Например, порты 80 (http) и 443 (https) используются для веб-серверов. Разработчики могут использовать порт 22 для подключения к серверу и его обслуживания.

image.png

Однако у нас есть проблема: если сервер сломается, клиенты будут получать ошибку.

Чтобы устранить эту проблему, требуется использовать балансировщик. Балансировщик поможет равномерно распределить нагрузку между несколькими серверами, что обеспечит более надежную и непрерывную работу сервиса.

Зачем нужен балансер
#

Балансеры — распределительные узлы, наподобие регулировщиков на дороге, которые направляют запросы на разные серверы.

Существует несколько способов выбора сервера, на который направляется запрос. Самый простой и популярный метод — отправка запросов по очереди на каждый сервер.

image.png

Балансер постоянно проверяет серверы с вопросом “Ты тут?”. Если сервер не отвечает, балансер перестает отправлять запросы клиента на этот сервер. Однако он продолжает периодически опрашивать его. Если сервер отвечает через некоторое время, балансер снова начинает направлять запросы на него.

Такая схема обеспечивает надежность всей системы даже в случае отказа нескольких серверов.

У базы данных также есть свой балансер, а на самом деле их может быть несколько. Все это делается в целях повышения надежности.

Однако даже такая схема не гарантирует абсолютную надежность. Что произойдет, если случится пожар в помещении с серверами или пропадет электричество? Балансер останется беспомощным, так как ни один из серверов не ответит на вопрос “Ты тут?”.

Поэтому необходимо размещать серверы в разных помещениях, желательно в разных городах. Такие помещения, где размещены серверы, называются датацентрами.

Датацентры
#

Датацентры — это дом для серверов, и у Яндекса их несколько. Лучше один раз его увидеть, чем прочитать о нем тысячу раз.

Если каждый из трех серверов разместить в отдельном датацентре, то схема станет еще более надежной. Даже если в одном из датацентров произойдет отключение электричества, остальные продолжат работать и обрабатывать запросы клиентов.

image.png

Главный принцип надежного построения сервисов — предусмотреть меры безопасности во всех потенциально опасных местах, чтобы минимизировать возможные негативные последствия.