Веб-серверы, объясненные с помощью микропивоварни

1656630253 veb servery obyasnennye s pomoshhyu mikropivovarni

Кевин Кононенко

1*sxUC3MzLY70akClqwjeV9g
Если вы можете понять разные входы и выходы микропивоварни, тогда вы сможете понять, как работает веб-сервер.

Когда вы только начинаете веб-разработку, вы можете спросить, Как именно все эти новые концепции связываются между собой, когда кто-то вводит текст в своем браузере?

Конечно, вы можете знать разницу между интерфейсом и бэк-эндом, но это дает вам только обзор высокого уровня.

Чтобы помочь, я хотел создать полное руководство, объясняющее связь между стороной клиента (браузер) и стороной сервера (несколько серверов).

Например, знаете ли вы разницу между сервером и базой данных?

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

0*IodX_wZgeMUkFXTZ

Модель клиент-сервер

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

Это означает, что клиенты будут время от времени звонить вашей команде продаж или отправлять электронные письма с a запрос. В Интернете это известно как a клиента. Клиент не делится своей вычислительной мощностью с другими членами сети, которых он запрашивает. Он просто задает определенное содержимое или функциональность.

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

Типичным примером клиента является веб-браузер, например Chrome. Серверы находятся в отдаленном месте, и ими управляют такие компании, как Amazon (Amazon Web Services).

0*FrW6HIGAUUKvm3TL

Вы можете подумать, что это одномерно, например, «да, это основы любого процесса покупки!» Но, как вы увидите через мгновение, это может стать несколько сложнее, поскольку в картину входит больше сторон.

Модель запрос-ответ

Как видите, каждая сторона имеет разные роли в модели клиент-сервер. Клиент является запросчиком, а сервер является ответчиком.

В очень простом примере супермаркет может отправить запрос вроде «Нам нужно 20 ящиков пива». В какой-то момент в будущем ваша мини-пивоварня пришлет ответ: запрошенное пиво.

0*Mf5a_y-d6_eW9-As

Подобным образом браузеры, такие как Chrome, посылают запросы централизованным серверам, возвращающим запрашиваемые данные. Например, когда вы загружаете страницу лайк reddit.comсервер должен отправить новую версию домашней страницы на основе последних данных голосования и комментариев.

0*e-iqoDjFBr0exMC9

Следовательно, ваш следующий вопрос может быть следующим: Как Интернет обрабатывает эти запросы и ответы в масштабе?

Прежде всего, каждое устройство, подключенное к сети (например, Интернету), называется a хост. У каждого хозяина он уникален IP-адрес для идентификации. А DNS сервер (новый тип сервера) соединяет URL-адрес, например reddit.com, с IP-адресом определенного сервера.

При вводе URL-адреса, например reddit.com, вы не подключаетесь непосредственно к веб-серверам reddit. Вы сначала подключаетесь к этому DNS-серверу, предоставленному хостинговой компанией. Тогда этот сервер отвечает по вашему запросу с конкретным адресом сервера reddit. Теперь ваш браузер может посылать запрос на сервер reddit.

Представьте, что вы работаете в супермаркете и делаете свой первый заказ пива на мини-пивоварне. Вы не можете просто позвонить в магазин пивоварни и заказать сотрудников, чтобы доставить вам пиво! Вместо этого вы звоните по телефону продавцу или агенту поддержки, который убедится, что вы понимаете, как работает логистика: какого дистрибьютора они используют, как быстро они могут доставить и т.д. Торговый агент подобен DNS-серверу, поскольку он совместно использует процесс фактического выполнения заказа.

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

0*b-6Jajds1wwYJ-mn

Итак, по порядку:

  1. Браузер, как Chrome, вводит URL-адрес reddit.com
  2. Запрос поступает на DNS-сервер, соответствующий IP-адресу сервера reddit
  3. Теперь браузер посылает запрос серверу reddit
  4. Сервер Reddit отвечает домашней страницей

Это иногда называют «разделением интересов». Это позволяет каждому серверу выполнять специализированную функцию, чтобы каждая часть могла работать наиболее эффективно.

Объяснение портов

Микропивоварня не обрабатывает только один тип запроса! В течение определенной недели он может обрабатывать:

  • Счета от поставщиков (например, разливной компании, поставщика хмеля)
  • Заказ от клиентов (как описано выше)
  • Заявки на работу от новых кандидатов

Каждый из этих типов запросов должен посылаться специалисту на пивоварне.

  • Счета поступают в бухгалтерию
  • Приказы поступают в оперативную группу
  • Заявки на работу поступают в отдел кадров
0*HMz9HG_Tlup_4eoF

Подобно пивоварне, сервер имеет пути для разных типов запросов. Такие называются порты. Некоторые распространенные примеры портов включают в себя:

Порт 25: SMTP (маршрутизация электронной почты)

Порт 80: HTTP (веб-запросы, как описано выше)

Порт 143: IMAP (управление по электронной почте)

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

Куда вписывается база данных?

Мы рассмотрели путь одного запроса к веб-серверу. В интерфейсе вы должны написать код на JavaScript, а сервер будет обрабатывать запрос с помощью языка, например Python или PHP, или фреймворка, например Node.js.

Но мы еще не рассмотрели ту часть, где база данных поступает в игру! База данных написана на SQL или MongoDB или на ряде других языков, которые используются для создания реляционных баз данных. Но он не хранится на том же сервере, который мы использовали до сих пор.

Вернемся в нашу микропивоварню. Сырье, используемое для изготовления пива:

  • бутылки
  • крышки от бутылок
  • хмель
  • солод
  • воды

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

Это внешнее хранилище похоже на сервер, специально запускающий базу данных, или a сервер базы данных. Мы также разделяем эту функцию, чтобы сделать ее максимально эффективной.

База данных – это просто цифровая структура, хранящая данные. Но сервер обеспечивает все рабочие протоколы, позволяющие этой базе данных участвовать в сети.

Итак, предположим, что клиент производит большой заказ на 1000 ящиков пива. Микропивоварни нужно будет связаться с составом, чтобы доставить еще несколько бутылок. Это еще один цикл запрос-ответ!

0*Ncors9an9_OVtz3w

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

0*JkMdifVfjooBS_mZ

Конечно, конечный пользователь ничего этого не видит. С их точки зрения они отправили запрос и получили ответ. Они не видят серверной связи за кулисами.

Реальный пример баз данных + серверов

Heroku – это облачный сервис, позволяющий веб-разработчикам легко развертывать свои приложения с наименьшим количеством кода и постоянного управления. Он использует виртуальные контейнеры, позволяющие арендовать часть полного сервера для запуска программы. Но это тема для другого урока.

В любом случае, Heroku позволяет вам посылать ваши последние комиты в виртуальный контейнер с помощью простой команды: git push heroku master. Затем эти изменения заработают после того, как вы приобретете домен в таком сервисе как Namecheap и подключите его к своему приложению Heroku.

Но если вы хотите использовать базу данных со своим живым приложением (вы, вероятно, это сделаете), вам все равно понадобится отдельное решение для размещения этой базы данных. Я рекомендую ClearDB, который имеет приложение на рынке Heroku. ClearDB имеет щедрую бесплатную версию, увеличивающуюся по мере роста вашей базы данных.

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

0*2CxK5nkEzS9qZ8GW

Получите новейшие пособия

Вам понравилось это объяснение? Дайте ему «хлоп» или зарегистрируйтесь здесь, чтобы получить новейшие учебные пособия:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *