Клиент — сервер

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Клиент-сервер»)
Перейти к навигации Перейти к поиску
Пример двухуровневой архитектуры

«Клиент — сервер» (англ. client–server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. Фактически клиент и сервер — это программное обеспечение. Обычно эти программы расположены на разных вычислительных машинах и взаимодействуют между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине. Программы-серверы ожидают от клиентских программ запросы и предоставляют им свои ресурсы в виде данных (например, загрузка файлов посредством HTTP, FTP, BitTorrent, потоковое мультимедиа или работа с базами данных) или в виде сервисных функций (например, работа с электронной почтой, общение посредством систем мгновенного обмена сообщениями или просмотр web-страниц во всемирной паутине). Поскольку одна программа-сервер может выполнять запросы от множества программ-клиентов, её размещают на специально выделенной вычислительной машине, настроенной особым образом, как правило, совместно с другими программами-серверами, поэтому производительность этой машины должна быть высокой. Из-за особой роли такой машины в сети, специфики её оборудования и программного обеспечения, её также называют сервером, а машины, выполняющие клиентские программы, соответственно, клиентами.

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

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

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

Взаимодействие клиента и сервера[править | править код]

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

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

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

Сравнение с peer-to-peer архитектурой[править | править код]

В дополнение к клиент–серверной модели распределенные вычислительные приложения часто используют peer-to-peer архитектуру.

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

Преимущества[править | править код]

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

Недостатки[править | править код]

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

Многоуровневая архитектура «клиент — сервер»[править | править код]

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

Частные случаи многоуровневой архитектуры:

Сеть с выделенным сервером[править | править код]

Сеть с выделенным сервером (англ. client/server network) — это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(а).

См. также[править | править код]

Литература[править | править код]

Валерий Коржов. Многоуровневые системы клиент-сервер. Издательство Открытые системы (17 июня 1997). Дата обращения: 31 января 2010.