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

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

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

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

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

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

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

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

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

Пример [ править ]

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

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

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

Ранняя история [ править ]

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

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

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

Клиент-хост и сервер-хост [ править ]

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

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

Централизованные вычисления [ править ]

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

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

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

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

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

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

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

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

См. Также [ править ]

  • Передняя и задняя части
  • Модульное программирование
  • Образец наблюдателя
  • Шаблон публикации – подписки
  • Технология вытягивания
  • Технология push
  • Удаленный вызов процедур
  • Номер смены сервера

Заметки [ править ]

  1. ^ «Распределенная архитектура приложений» (PDF) . Sun Microsystem. Архивировано из оригинального (PDF) 6 апреля 2011 года . Проверено 16 июня 2009 .
  2. ^ Система X Window является одним из примеров.
  3. ^ Benatallah, B .; Casati, F .; Тумани, Ф. (2004). «Моделирование диалогов веб-сервисов: краеугольный камень автоматизации электронного бизнеса». IEEE Internet Computing . 8 : 46–54. DOI : 10.1109 / MIC.2004.1260703 . S2CID 8121624 . 
  4. ^ Dustdar, S .; Шрайнер, В. (2005). «Обзор по составу веб-сервисов» (PDF) . Международный журнал веб- и грид-сервисов . 1 : 1. CiteSeerX 10.1.1.139.4827 . DOI : 10.1504 / IJWGS.2005.007545 .  
  5. ^ a b Рулифсон, Джефф (июнь 1969 г.). DEL . IETF . DOI : 10,17487 / RFC0005 . RFC 5 . Проверено 30 ноября 2013 года . CS1 maint: обескураженный параметр ( ссылка )
  6. Шапиро, Элмер Б. (март 1969 г.). Сетевое расписание . IETF . DOI : 10,17487 / RFC0004 . RFC 4 . Проверено 30 ноября 2013 года . CS1 maint: обескураженный параметр ( ссылка )
  7. ^ Стерджис, Говард Э .; Митчелл, Джеймс Джордж; Израиль, Джей Э. (1978). «Отделение данных от функции в распределенной файловой системе» . Xerox PARC . Цитировать журнал требует |journal=( помощь )
  8. ^ Харпер, Дуглас. "сервер" . Интернет-словарь этимологии . Проверено 30 ноября 2013 года .
  9. ^ «Отделение данных от функции в распределенной файловой системе» . GetInfo . Немецкая национальная библиотека науки и технологий . Архивировано из оригинального 2 -го декабря 2013 года . Проверено 29 ноября 2013 года .
  10. ^ a b Ние, Джейсон; Ян, С. Джэ; Новик, Наоми (2000). «Сравнение компьютерных архитектур тонких клиентов» . Academic Commons . DOI : 10,7916 / D8Z329VF . Проверено 28 ноября 2018 .
  11. ^ д'Амор, MJ; Оберст, ди-джей (1983). «Микрокомпьютеры и мэйнфреймы». Материалы 11-й ежегодной конференции ACM SIGUCCS по пользовательским сервисам - SIGUCCS '83 . п. 7. DOI : 10,1145 / 800041,801417 . ISBN 978-0897911160. S2CID  14248076 .
  12. ^ Толя, Niraj; Андерсен, Дэвид Дж .; Сатьянараянан, М. (март 2006 г.). «Количественная оценка интерактивного взаимодействия с пользователем на тонких клиентах» (PDF) . Компьютер . Компьютерное общество IEEE . 39 (3): 46–52. DOI : 10.1109 / mc.2006.101 . S2CID 8399655 .  
  13. ^ Оти, Майкл (22 марта 2011). «Действительно ли облако - это возвращение мэйнфрейм-вычислений?» . SQL Server Pro . Пентон Медиа . Архивировано из оригинала 3 декабря 2013 года . Проверено 1 декабря 2013 года .
  14. ^ Баррос, AP; Дюма, М. (2006). «Рост экосистем веб-сервисов». ИТ-специалист . 8 (5): 31. DOI : 10,1109 / MITP.2006.123 . S2CID 206469224 . 
  15. ^ Карделлини, V .; Colajanni, M .; Ю. П.С. (1999). «Динамическая балансировка нагрузки на системы Web-серверов». IEEE Internet Computing . Институт инженеров по электротехнике и радиоэлектронике (IEEE). 3 (3): 28–39. DOI : 10.1109 / 4236.769420 . ISSN 1089-7801 . 
  16. ^ «Что такое балансировка нагрузки? Как работают балансировщики нагрузки» . NGINX . 1 июня 2014 . Проверено 21 января 2020 года .
  17. ^ Варма, Васудева (2009). «1: Учебник по архитектуре программного обеспечения» . Архитектура программного обеспечения: тематический подход . Дели: Pearson Education India. п. 29. ISBN 9788131707494. Проверено 4 июля 2017 . Распределенные одноранговые системы [...] Это общий стиль, популярными стилями которого являются стили клиент-сервер и главный-подчиненный.