Клиент-серверная модель - Client–server model

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

Модель клиент-сервер - это распределенная структура приложения, которая разделяет задачи или рабочие нагрузки между поставщиками ресурса или службы, называемыми серверами , и инициаторами запросов на обслуживание, называемыми клиентами . Часто клиенты и серверы обмениваются данными по компьютерной сети на отдельном оборудовании, но и клиент, и сервер могут находиться в одной системе. Хост сервера запускает одну или несколько серверных программ, которые делятся своими ресурсами с клиентами. Клиент обычно не делится своими ресурсами, но запрашивает контент или услугу с сервера. Таким образом, клиенты инициируют сеансы связи с серверами, ожидающими входящих запросов. Примерами компьютерных приложений, использующих модель клиент-сервер, являются электронная почта , сетевая печать и World Wide Web .

Роль клиента и сервера

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

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

Связь между клиентом и сервером

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

Клиенты и серверы обмена сообщениями в запрос-ответ шаблон обмена сообщениями . Клиент отправляет запрос, а сервер возвращает ответ. Этот обмен сообщениями является примером межпроцессного взаимодействия . Для взаимодействия компьютеры должны иметь общий язык, и они должны следовать правилам, чтобы и клиент, и сервер знали, чего ожидать. Язык и правила общения определены в протоколе связи . Все протоколы работают на прикладном уровне . Протокол прикладного уровня определяет основные шаблоны диалога. Чтобы еще больше формализовать обмен данными, сервер может реализовать интерфейс прикладного программирования (API). API - это уровень абстракции для доступа к сервису. Ограничивая связь определенным форматом контента , он облегчает синтаксический анализ . Абстрагируя доступ, он облегчает межплатформенный обмен данными.

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

Пример

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

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

Этот пример иллюстрирует шаблон проектирования, применимый к модели клиент-сервер: разделение задач .

История ранних веков

Ранней формой клиент-серверной архитектуры является ввод удаленного задания , относящийся, по крайней мере, к OS / 360 (объявлен в 1964 г.), где запрос заключался в выполнении задания , а ответ был выходом.

Формулируя модель клиент-сервер , в 1960 - х и 1970 - х годах, компьютерные ученые строят ARPANETСтэнфордском исследовательском институте ) используются термины сервера-хоста (или обслуживания узла ) и пользователя-хост (или с помощью-хоста ), и они появляются в ранние документы RFC 5 и RFC 4. Это использование было продолжено в Xerox PARC в середине 1970-х годов.

Один из контекстов, в котором исследователи использовали эти термины, заключался в разработке языка программирования компьютерной сети под названием Decode-Encode Language (DEL). Цель этого языка состояла в том, чтобы принимать команды от одного компьютера (пользователь-хост), который возвращал бы отчеты о состоянии пользователю, поскольку он закодировал команды в сетевых пакетах. Другой компьютер с функцией DEL, сервер-хост, получил пакеты, декодировал их и вернул отформатированные данные на хост-пользователя. Программа DEL на пользовательском хосте получила результаты для представления пользователю. Это транзакция клиент-сервер. Разработка DEL только началась в 1969 году, когда Министерство обороны США создало ARPANET (предшественник Интернета ).

Клиент-хост и сервер-хост

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

Слово « клиент » впервые используется в статье 1978 года «Отделение данных от функции в распределенной файловой системе» компьютерных ученых Xerox PARC Говарда Стерджиса, Джеймса Митчелла и Джея Исраэля. Авторы тщательно определяют термин для читателей и объясняют, что они используют его, чтобы различать пользователя и сетевой узел пользователя (клиент). К 1992 году слово « сервер» вошло в обиход.

Централизованные вычисления

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

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

Сравнение с одноранговой архитектурой

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

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

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

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

И клиент-сервер, и главный-подчиненный рассматриваются как подкатегории распределенных одноранговых систем.

Смотрите также

Примечания