Что является клиентом web сервера
Перейти к содержимому

Что является клиентом web сервера

  • автор:

Как работает WEB. Клиент-серверная модель и архитектура веб-приложения

img

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

В этой же части рассмотрим, как устроены клиент, сервер и веб-приложение, что мы можем удобно серфить в Интернете.

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

Эта идея взаимодействия клиента и сервера по сети называется моделью «клиент-сервер». Это делает возможным просмотр веб-сайтов (например, сайт wiki.merionet.ru) и взаимодействие с веб-приложением (как Gmail).

На самом деле, модель клиент-сервер — это ни что иное, как способ описать отношения между клиентом и сервером в веб-приложении. Это детали того, как информация переходит от одного конца к другому, где картина усложняется.

Базовая конфигурация веб-приложения

Существует сотни способов настройки веб-приложения. При этом большинство из них следуют одной и той же базовой структуре: клиент, сервер, база данных.

Клиент

Клиент — это то, с чем взаимодействует пользователь. Так что «клиентский» код отвечает за большую часть того, что на самом деле видит пользователь. Это включает в себя:

  1. Определение структуры веб-страницы
  2. Настройка внешнего вида веб-страницы
  3. Реализация механизма пользовательского взаимодействия (нажатие кнопок, ввод текста и т.д.)

Структура: Макет и содержимое веб-страницы определяются с помощью HTML (обычно HTML 5, если речь идет о современных веб-приложениях, но это другая история.)

HTML означает язык гипертекстовой разметки (Hypertext Markup Language). Он позволяет описать основную физическую структуру документа с помощью HTML-тэгов. Каждый HTML-тэг описывает определенный элемент документа.

HTML-тэги

  • Содержимое тега «» описывает заголовок.
  • Содержимое тега «

    » описывает абзац.

  • Содержимое тега «» описывает кнопку.
  • И так далее.

Веб-браузер использует эти HTML-тэги для определения способа отображения документа.

Look and Feel: Чтобы определить внешний вид веб-страницы, веб-разработчики используют CSS, который расшифровывается как каскадные таблицы стилей (Cascading Style Sheets). CSS — это язык, который позволяет описать стиль элементов, определенных в HTML, позволяя изменять шрифт, цвет, макет, простые анимации и другие поверхностные элементы.

Стили для указанной выше HTML-страницы можно задать следующим образом:

CSS

Взаимодействие с пользователем: Наконец, для реализации механизма взаимодействия с пользователем, на сцену выходит JavaScript.

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

JavaScript

Иногда взаимодействие с пользователем, может быть реализовано без необходимости обращения к вашему серверу — отсюда и термин «JavaScript на стороне клиента». Другие типы взаимодействия требуют отправки запросов на сервер для обработки.

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

Сервер

Сервер в веб-приложении прослушивает запросы, поступающие от клиента. При настройке HTTP-сервера он должен прослушивать конкретный номер порта. Номер порта всегда связан с IP-адресом компьютера.

Вы можете рассматривать порты как отдельные каналы на каждом компьютере, которые можно использовать для выполнения различных задач: один порт может быть использован для серфинга на wiki.merionet.ru, в то время как через другой получаете электронную почту. Это возможно, поскольку каждое из приложений (веб-браузер и клиент электронной почты) использует разные номера портов.

После настройки HTTP-сервера для прослушивания определенного порта сервер ожидает клиентские запросов, поступающие на этот порт, выполняет все действия, указанные в запросе, и отправляет все запрошенные данные через HTTP-ответ.

База данных

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

Например, при создании сайта в социальных сетях можно использовать базу данных для хранения сведений о пользователях, публикациях и комментариях. Когда посетитель запрашивает страницу, данные, вставленные на страницу, поступают из базы данных сайта, что позволяет нам воспринимать взаимодействие пользователей в реальном времени как должное на таких сайтах, как Facebook или в таких приложениях, как Gmail.

Клиент, сервер и база данных

Как масштабировать простое веб-приложение

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

Чтобы выполнить масштабирование в соответствии с этими большими объемами, можно распределить входящий трафик между группой внутренних серверов.

Здесь все становится интересно. Имеется несколько серверов, каждый из которых имеет собственный IP-адрес. Итак, как сервер доменных имен (DNS) определяет, на какой экземпляр вашего приложения отправить трафик?

Ответ очевиден — никак. Управление всеми этими отдельными экземплярами приложения происходит через средство балансировки нагрузки.

Подсистема балансировки нагрузки действует как гаишник, который маршрутизирует клиентские запросы по серверам как можно быстрее и эффективнее, насколько это возможно.

Поскольку вы не можете транслировать IP-адреса всех экземпляров сервера, вы создаете виртуальный IP-адрес, который транслируется клиентам. Этот виртуальный IP-адрес указывает на подсистему балансировки нагрузки. Таким образом, когда DNS ищет ваш сайт, он указывает на балансировщик нагрузки. Затем подсистема балансировки нагрузки перескакивает для распределения трафика на различные внутренние серверы в реальном времени.

Возможно, вам интересно, как подсистема балансировки нагрузки узнаёт, на какой сервер следует отправлять трафик. Ответ: алгоритмы.

Один популярный алгоритм, Round Robin, включает равномерное распределение входящих запросов по ферме серверов (все доступные серверы). Вы обычно выбираете такой подход, если все ваши серверы имеют одинаковую скорость обработки и память.

С помощью другого алгоритма, Least Connections, следующий запрос отправляется на сервер с наименьшим количеством активных соединений.

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

Теперь поток трафика выглядит следующим образом:

Балансировщик

Службы

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

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

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

Каждая служба имеет автономную единицу функциональности, такую как авторизация пользователей или предоставление функции поиска. Службы позволяют разбить один веб-сервер на несколько служб, каждая из которых выполняет отдельные функции.

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

Другое преимущество здесь заключается в том, что он позволяет командам внутри компании работать независимо над конкретной услугой, а не иметь 10, 100 или даже 1000 инженеров, работающих на одном монолитном сервере, который быстро становится кошмаром для менеджера проекта.

Службы

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

Сети доставки контента (Conten Delivery Network – CDN)

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

Главный веб-сервер

Популярная тактика решения этой проблемы — использование сети доставки контента (CDN). CDN — это большая распределенная система «прокси» серверов, развернутая во многих центрах обработки данных. Прокси-сервер — это просто сервер, который действует как посредник между клиентом и сервером.

Компании с большим объемом распределенного трафика могут платить CDN-компаниям за доставку контента конечным пользователям с помощью серверов CDN. CDN имеет тысячи серверов, расположенных в стратегических географических точках по всему миру.

Давайте сравним, как веб-сайт работает с CDN и без него.

Как мы уже говорили в разделе 1, для типичного веб-сайта доменное имя URL преобразуется в IP-адрес сервера хоста.

Однако если клиент использует CDN, доменное имя URL преобразуется в IP-адрес пограничного сервера, принадлежащего CDN. Затем CDN доставляет веб-контент пользователям клиента, не затрагивая серверы клиента.

CDN может сделать это, сохраняя копии часто используемых элементов, таких как HTML, CSS, загрузки программного обеспечения и медиаобъектов с серверов клиентов.

CDN

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

Что такое веб-сервер и для чего он нужен?

Nataliya

Что такое веб-сервер и для чего он нужен?

Вы наверняка слышали словосочетание «веб-сервер». Что это такое? Чем он отличается от обычного сервера и в чем заключены его функции и задачи. Разберемся.

Веб-сервер – это программа выполняющая роль посредника между запросами пользователя компьютера и данными выложенными в интернете и, в конечном счете, на соответствующих серверах. Точно также называется и сервер, на котором располагается данное программное обеспечение. Если сказать сложнее и технически, веб-сервер – это программа позволяющая обрабатывать НТТР-запросы и выдавать корректные НТТР-ответы.

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

Как это происходит?

Интернет содержит в себе огромные объемы данных, которые отображаются в том или ином виде, когда мы делаем запрос со своего браузера. Когда в строке вводится URL-адрес сайта или страницы, через соответствующий протокол (http и https) идет запрос в сервер, где расположены данные которые запрашиваются. Веб-сервер обрабатывает этот запрос и выдает корректный продукт в виде сайта, страницы, сервиса и т.п. всего, что вы можете найти на просторах глобальной сети.

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

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

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

В чем отличие веб-сервера от обычного сервера?

Суть процесса – подобна работе обычного сервера, где происходит обращение к определенным данным расположенным на сервере с помощью соответствующей специальной программы (как например, в случае 1С бухгалтерии). Отличие веб-сервера в том, что специализация программы, так сказать, распространяется на весь интернет, где она работает посредником и обработчиком запросов и выдач. Поэтому веб-серверы отличаются своей относительной универсальностью. Среди наиболее популярных компаний занимающихся разработкой веб-серверов являются Apache и Microsoft. Они без проблем взаимодействуют со всеми операционными системами, такими как Microsoft Windows, Linux, Mac OS и т.д.

Резюмируя: веб-сервер – это программа-посредник обрабатывающая запросы пользователей в интернете с помощью браузеров и выдающая корректный ответ в виде готового продукта.

Глоссарий

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

В чем разница между веб-сервером и сервером приложений?

В чем разница между веб-сервером и сервером приложений?

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

Как они работают: веб-сервер или сервер приложений

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

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

Веб-сервер – это технология, на которой размещаются код и данные веб-сайта. Когда вы вводите URL-адрес в браузере, этот URL-адрес фактически является идентификатором адреса веб-сервера.

Ваш браузер и веб-сервер взаимодействуют указанным ниже образом.

  1. Браузер использует URL-адрес для поиска IP-адреса сервера
  2. Браузер отправляет HTTP-запрос на получение информации
  3. Веб-сервер связывается с сервером баз данных для поиска соответствующих данных
  4. Веб-сервер возвращает браузеру статический контент, такой как HTML-страницы, изображения, видео или файлы, в HTTP-ответе
  5. Затем браузер отображает вам информацию

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

Как работает сервер приложений

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

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

  1. Браузер использует URL-адрес для поиска IP-адреса сервера
  2. Браузер отправляет HTTP-запрос на получение информации
  3. Веб-сервер передает запрос на сервер приложений
  4. Сервер приложений применяет бизнес-логику и взаимодействует с другими серверами и сторонними системами для выполнения запроса
  5. Сервер приложений отображает новую HTML-страницу и возвращает ее в ответ веб-серверу
  6. Веб-сервер возвращает ответ браузеру
  7. Браузер отображает информацию для вас

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

Ключевые отличия: веб-сервер и сервер приложений

У веб-серверов и серверов приложений есть несколько ключевых отличий.

Охваченные задачи

Веб-сервер размещает веб-сайты и предоставляет ответы на простые запросы. Веб-серверы также регистрируют активность сервера и позволяют создавать сценарии на стороне сервера.

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

Используемые протоколы

Основным протоколом, который используют веб-серверы, является протокол HTTP. Однако различные веб-серверы также поддерживают FTP и простой протокол передачи почты (SMTP). Эти два протокола облегчают хранение и передачу файлов, а также электронную почту.

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

Типы контента

Веб-серверы в основном предоставляют статический контент. Статический контент – это контент, который серверу не нужно изменять или обрабатывать перед отправкой. Например, файлы изображений (например, PNG, GIF и JPEG), загружаемые документы (PDF-файлы), видео и HTML-файлы представляют собой статический контент.

Серверы приложений в основном предоставляют динамический контент. Динамический контент – это контент, который меняется в зависимости от того, как пользователь взаимодействует с ним. Например, динамически создаваемые отчеты, настраиваемые представления данных, персонализированные пользовательские интерфейсы, результаты базы данных и обработанный HTML-код – все это динамический контент.

Многопоточность

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

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

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

Как взаимодействуют серверы приложений и веб-серверы?

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

Если веб-сервер не может получить доступ к нужному пользователю содержимому, он перенаправляет запрос на сервер приложений. Сервер приложений обрабатывает данные и использует бизнес-логику для предоставления правильной информации. Затем запрос передается обратно на веб-сервер, который передает его пользователю. В некоторых архитектурах можно также настроить серверы приложений для самостоятельной обработки HTTP-запросов.

Краткое описание различий: веб-сервер и сервер приложений

Веб-сервер

Сервер приложений

Веб-серверы предоставляют ответы на простые запросы.

Сервер приложений предоставляет более сложное содержимое из баз данных, сервисов и корпоративных систем.

Веб-серверы в основном используют HTTP. Они также поддерживают FTP и SMTP.

Серверы приложений поддерживают множество протоколов.

Веб-серверы предоставляют статический контент, такой как HTML-страницы, изображения, видео и файлы.

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

Как правило, многопоточность не используется.

Используется многопоточность для одновременной обработки запросов.

Как AWS может удовлетворить требования к веб-серверу и серверу приложений?

Amazon Web Services (AWS) предлагает несколько решений облачного веб-хостинга, обеспечивающих недорогой способ доставки веб-приложений и веб-сайтов. Дополнительные сведения см. в статье о веб-хостинге на AWS. Вот два решения AWS для веб-хостинга:

  • Amazon Lightsail – простейший способ запустить веб-сервер на AWS и управлять им. Lightsail включает все необходимое для запуска веб-сайта: виртуальную машину, хранилище на базе SSD, механизмы передачи данных, управление DNS и статический IP – и все это по низкой, предсказуемой цене.
  • Эластичное вычислительное облако Amazon (Amazon EC2) предоставляет масштабируемые вычислительные мощности для серверов приложений в облаке. Оно помогает разработчикам, упрощая проведение вычислений в облаке в масштабе всего Интернета. Оно также обеспечивает максимальную масштабируемость и доступность веб-сайтов и веб-приложений. Amazon EC2 меняет экономику вычислений, и вы платите только за фактически используемые ресурсы.

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

Ниже приведены способы использования бессерверных сервисов AWS.

  • Храните данные с помощью Простого сервиса хранения данных Amazon (Amazon S3), Эластичной файловой системы Amazon (Amazon EFS) и Amazon DynamoDB.
  • Вычисляйте с помощью AWS Fargate и AWS Lambda.
  • Интегрируйте приложения с AWS AppSync, Amazon EventBridge и Простым сервисом очередей Amazon (Amazon SQS).

Начните работу с веб-серверами и серверами приложений на AWS, создав аккаунт уже сегодня.

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

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