stringtranslate.com

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

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

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

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

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

Является ли компьютер клиентом, сервером или тем и другим, определяется характером приложения, которому требуются сервисные функции. Например, на одном компьютере могут одновременно работать веб-сервер и программное обеспечение файлового сервера, чтобы предоставлять разные данные клиентам, делающим разные типы запросов. Клиентское программное обеспечение также может взаимодействовать с серверным программным обеспечением на одном компьютере. [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] Он в значительной степени зависит от сетевых ресурсов (серверов и инфраструктуры) для вычислений и хранения. Бездисковый узел загружает из сети даже свою операционную систему , а компьютерный терминал вообще не имеет операционной системы; это всего лишь интерфейс ввода/вывода для сервера. Напротив, богатый клиент , такой как персональный компьютер , имеет много ресурсов и не зависит от сервера для выполнения основных функций.

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

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

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

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

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

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

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

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

Примечания

  1. ^ «Архитектура распределенных приложений» (PDF) . Солнечная микросистема. Архивировано из оригинала (PDF) 6 апреля 2011 года . Проверено 16 июня 2009 г.
  2. ^ Одним из примеров является система X Window .
  3. ^ Бенаталлах, Б.; Казати, Ф.; Тумани, Ф. (2004). «Моделирование диалога с веб-сервисами: краеугольный камень автоматизации электронного бизнеса». IEEE Интернет-вычисления . 8 : 46–54. дои : 10.1109/MIC.2004.1260703. S2CID  8121624.
  4. ^ Дустдар, С.; Шрайнер, В. (2005). «Опрос по составу веб-сервисов» (PDF) . Международный журнал веб- и грид-сервисов . 1 :1. CiteSeerX 10.1.1.139.4827 . doi : 10.1504/IJWGS.2005.007545. 
  5. ^ Аб Рулифсон, Джефф (июнь 1969 г.). ДЕЛ. IETF . дои : 10.17487/RFC0005 . РФК 5 . Проверено 30 ноября 2013 г.
  6. ^ Шапиро, Элмер Б. (март 1969 г.). Сетевое расписание. IETF . дои : 10.17487/RFC0004 . РФК 4 . Проверено 30 ноября 2013 г.
  7. ^ Стерджис, Ховард Э.; Митчелл, Джеймс Джордж; Израиль, Джей Э. (1978). «Отделение данных от функции в распределенной файловой системе». Ксерокс ПАРК .
  8. ^ Харпер, Дуглас. "сервер". Интернет-словарь этимологии . Проверено 30 ноября 2013 г.
  9. ^ «Отделение данных от функции в распределенной файловой системе». Получить данные . Немецкая национальная библиотека науки и технологий . Архивировано из оригинала 2 декабря 2013 года . Проверено 29 ноября 2013 г.
  10. ^ Аб Ние, Джейсон; Ян, С. Джэ; Новик, Наоми (2000). «Сравнение вычислительных архитектур тонких клиентов». Академическое сообщество . дои : 10.7916/D8Z329VF . Проверено 28 ноября 2018 г.
  11. ^ д'Амор, MJ; Оберст, диджей (1983). «Микрокомпьютеры и мейнфреймы». Материалы 11-й ежегодной конференции ACM SIGUCCS по пользовательским сервисам — SIGUCCS '83 . п. 7. дои : 10.1145/800041.801417. ISBN 978-0897911160. S2CID  14248076.
  12. ^ Толя, Нирадж; Андерсен, Дэвид Г.; Сатьянараянан, М. (март 2006 г.). «Количественная оценка интерактивного взаимодействия с пользователем на тонких клиентах» (PDF) . Компьютер . Компьютерное общество IEEE . 39 (3): 46–52. дои : 10.1109/mc.2006.101. S2CID  8399655.
  13. Оти, Майкл (22 марта 2011 г.). «Действительно ли облако — это просто возвращение к мэйнфреймам?». SQL-сервер Про . Пентон Медиа . Архивировано из оригинала 3 декабря 2013 года . Проверено 1 декабря 2013 г.
  14. ^ Баррос, AP; Дюма, М. (2006). «Рост экосистем веб-сервисов». ИТ-специалист . 8 (5): 31. doi :10.1109/MITP.2006.123. S2CID  206469224.
  15. ^ Карделлини, В.; Колаянни, М.; Ю, П.С. (1999). «Динамическая балансировка нагрузки на веб-серверных системах». IEEE Интернет-вычисления . Институт инженеров по электротехнике и электронике (IEEE). 3 (3): 28–39. дои : 10.1109/4236.769420. ISSN  1089-7801.
  16. ^ «Что такое балансировка нагрузки? Как работают балансировщики нагрузки» . НГИНКС . 1 июня 2014 года . Проверено 21 января 2020 г.
  17. ^ Варма, Васудева (2009). «1: Учебник по архитектуре программного обеспечения». Архитектура программного обеспечения: подход, основанный на конкретных примерах . Дели: Pearson Education India. п. 29. ISBN 9788131707494. Проверено 4 июля 2017 г. Распределенные одноранговые системы [...] Это общий стиль, популярными стилями которого являются стили клиент-сервер и главный-подчиненный.