Архитектура клиент сервер: Лекция 6, ч.1. Архитектура клиент-сервер · Курс лекций «Тестирование програмного обеспечения»
Содержание
Лекция 6, ч.1. Архитектура клиент-сервер · Курс лекций «Тестирование програмного обеспечения»
Веб-приложение – это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер (в широком смысле).
Основная часть приложения, как правило, находится на стороне веб-сервера, который обрабатывает полученные запросы в соответствии с бизнес-логикой продукта и формирует ответ, отправляемый пользователю. На этом этапе в работу включается браузер, именно он преобразовывает полученный ответ от сервера в графический интерфейс, понятный пользователю.
Архитектура «клиент-сервер» определяет общие принципы организации взаимодействия в сети, где имеются серверы, узлы-поставщики некоторых специфичных функций (сервисов) и клиенты (потребители этих функций).
Практические реализации такой архитектуры называются клиент-серверными технологиями.
Двухзвенная архитектура — распределение трех базовых компонентов между двумя узлами (клиентом и сервером). Двухзвенная архитектура используется в клиент-серверных системах, где сервер отвечает на клиентские запросы напрямую и в полном объеме.
Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры:
- Сервер терминалов — распределенное представление данных.
- Файл-сервер — доступ к удаленной базе данных и файловым ресурсам.
- Сервер БД — удаленное представление данных.
- Сервер приложений — удаленное приложение.
Клиент – это браузер, но встречаются и исключения (в тех случаях, когда один веб-сервер (ВС1) выполняет запрос к другому (ВС2), роль клиента играет веб-сервер ВС1). В классической ситуации (когда роль клиента выполняет браузер) для того, чтобы пользователь увидел графический интерфейс приложения в окне браузера, последний должен обработать полученный ответ веб-сервера, в котором будет содержаться информация, реализованная с применением HTML, CSS, JS (самые используемые технологии). Именно эти технологии «дают понять» браузеру, как именно необходимо «отрисовать» все, что он получил в ответе.
Веб-сервер – это сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает. Наиболее распространенными видами ПО веб-серверов являются Apache, IIS и NGINX. На веб-сервере функционирует тестируемое приложение, которое может быть реализовано с применением самых разнообразных языков программирования: PHP, Python, Ruby, Java, Perl и пр.
База данных фактически не является частью веб-сервера, но большинство приложений просто не могут выполнять все возложенные на них функции без нее, так как именно в базе данных хранится вся динамическая информация приложения (учетные, пользовательские данные и пр).
База данных — это информационная модель, позволяющая упорядоченно хранить данные об объекте или группе объектов, обладающих набором свойств, которые можно категоризировать. Базы данных функционируют под управлением так называемых систем управления базами данных (далее – СУБД). Самыми популярными СУБД являются MySQL, MS SQL Server, PostgreSQL, Oracle (все – клиент-серверные).
Трехзвенная архитектура — сетевое приложение разделено на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате.
Третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом:
- Представление данных — на стороне клиента.
- Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции
промежуточного ПО). - Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные.
Трехзвенная архитектура может быть расширена до многозвенной (N-tier, Multi-tier) путем выделения дополнительных серверов, каждый из которых будет представлять собственные сервисы и пользоваться услугами прочих серверов разного уровня.
Двухзвенная архитектура проще, так как все запросы обслуживаются одним сервером, но именно из-за этого она менее надежна и предъявляет повышенные требования к производительности сервера.
Трехзвенная архитектура сложнее, но, благодаря тому, что функции распределены между серверами второго и третьего уровня, эта архитектура предоставляет:
- Высокую степень гибкости и масштабируемости.
- Высокую безопасность (т.к. защиту можно определить для каждого сервиса или уровня).
- Высокую производительность (т.к. задачи распределены между серверами).
Клиент-серверные технологии
Архитектура клиент-сервер применяется в большом числе сетевых технологий, используемых для доступа к различным сетевым сервисам.
Типы сервисов:
Изначально предоставляли доступ к гипертекстовым документам по протоколу HTTP (Hyper Text Transfer Protocol). Сейчас поддерживают расширенные возможности, в частности, работу с бинарными файлами (изображения, мультимедиа и т.п.).
- Серверы приложений
Предназначены для централизованного решения прикладных задач в некоторой предметной области. Для этого пользователи имеют право запускать серверные программы на исполнение. Использование серверов приложений позволяет снизить требования к конфигурации клиентов и упрощает общее управление сетью.
- Серверы баз данных
Серверы баз данных используются для обработки пользовательских запросов на языке SQL. При этом, СУБД находится на сервере, к которому и подключаются клиентские приложения.
Файл-сервер хранит информацию в виде файлов и предоставляет пользователям доступ к ней. Как правило, файл-сервер обеспечивает и определенный уровень защиты от несанкционированного доступа
- Прокси-сервер
Во-первых, действует как посредник, помогая пользователям получить информацию из Интернета и, при этом, обеспечивая защиту сети.
Во-вторых, сохраняет часто запрашиваемую информацию в кэш-памяти на локальном диске, быстро доставляя ее пользователям, без повторного обращения к Интернету.
- Файрволы (брандмауэры)
Межсетевые экраны, анализирующие и фильтрующие проходящий сетевой трафик, с целью обеспечения безопасности сети.
- Почтовые серверы
Предоставляют услуги по отправке и получению электронных почтовых сообщений.
- Серверы удаленного доступа (RAS)
Эти системы обеспечивают связь с сетью по коммутируемым линиям. Удаленный сотрудник может использовать ресурсы корпоративной ЛВС, подключившись к ней с помощью обычного модема.
Для доступа к тем или иным сетевым сервисам используются клиенты, возможности которых характеризуются понятием «толщины». Оно определяет конфигурацию оборудования и программное обеспечение, имеющиеся у клиента. Рассмотрим возможные граничные значения:
«Тонкий» клиент
Этот термин определяет клиента, вычислительных ресурсов которого достаточно лишь для запуска необходимого сетевого приложения через web-интерфейс. Пользовательский интерфейс такого приложения формируется средствами статического HTML (выполнение JavaScript не предусматривается), вся прикладная логика выполняется на сервере. Для работы тонкого клиента достаточно лишь обеспечить возможность запуска web-браузера, в окне которого и осуществляются все действия. По этой причине web-браузер часто называют «универсальным клиентом».
«Толстый» клиент
Таковым является рабочая станция или персональный компьютер, работающие под управлением собственной дисковой операционной системы и имеющие необходимый набор программного обеспечения. К сетевым серверам «толстые» клиенты обращаются, в основном, за дополнительными услугами (например, доступ к web-серверу или корпоративной базе данных).
Так же под «толстым» клиентом подразумевается и клиентское сетевое приложение, запущенное под управлением локальной ОС. Такое приложение совмещает компонент представления данных (графический пользовательский интерфейс ОС) и прикладной компонент (вычислительные мощности клиентского компьютера).
В последнее время все чаще используется еще один термин:«rich»-client. «Rich» -клиент, своего рода, компромисс между «толстым» и «тонким» клиентом. Как и «тонкий» клиент, «rich»-клиент также представляет графический интерфейс, описываемый уже средствами XML и включающий некоторую функциональность толстых клиентов (например, интерфейс drag-and-drop, вкладки, множественные окна, выпадающие меню и т.п.)
Прикладная логика «rich»-клиента также реализована на сервере. Данные отправляются в стандартном формате обмена, на основе того же XML (протоколы SOAP, XML-RPC) и интерпретируются клиентом.
Некоторые основные протоколы «rich»-клиентов на базе XML приведены ниже:
- XAML (eXtensible Application Markup Language) — разработан Microsoft и используется в приложениях на платформе .NET.
- XUL (XML User Interface Language) — стандарт, разработанный в рамках проекта Mozilla, используется, например, в почтовом клиенте Mozilla Thunderbird или браузере Mozilla Firefox.
- Flex — мультимедийная технология на основе XML, разработанная Macromedia/Adobe.
Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии ПО.
Сетевой протокол — набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.
Сетевые протоколы:
TCP/IP — набор протоколов передачи данных, получивший название от двух принадлежащих ему протоколов: TCP (англ. Transmission Control Protocol) и IP (англ. Internet Protocol).
Наиболее известные протоколы, используемые в сети Интернет:
HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста.
HTTPS (HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования, в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов SSL или TLS.
SSL ( Secure Sockets Layer — уровень защищённых cокетов) — криптографический протокол, который подразумевает более безопасную связь.
FTP (File Transfer Protocol) — это протокол передачи файлов со специального файлового сервера на компьютер пользователя.
POP3 (Post Office Protocol) — это стандартный протокол почтового соединения.
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи почты.
TELNET — это протокол удаленного доступа.
DTN — протокол, предназначенный для сетей дальней космической связи IPN, которые используются NASA.
Всё ПО для работы с протоколом HTTP разделяется на три большие категории:
1.Серверы — основные поставщики услуг хранения и обработки информации (обработка запросов).
2.Клиенты — конечные потребители услуг сервера (отправка запроса).
3.Прокси (посредники) — для выполнения транспортных служб.
Прокси-сервер (proxy — «представитель, уполномоченный») — промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы.
Основные понятия и особенности клиент-серверной архитектуры — TestMatick
Термин «клиент-серверная архитектура» – сборное понятие, состоящее из двух взаимодополняющих компонентов: сервера и, собственно, клиента.
Клиент – локальный компьютер на стороне виртуального пользователя, который выполняет отправку запроса к серверу для возможности предоставления данных или выполнения определенной группы системных действий.
Сервер – очень мощный компьютер или специальное системное оборудование, которое предназначается для разрешения определенного круга задач по процессу выполнения программных кодов. Он выполняет работы сервисного обслуживания по клиентским запросам, предоставляет пользователям доступ к определенным системным ресурсам, сохраняет данные или БД.
Особенности такой модели заключаются в том, что пользователь отправляет определенный запрос на сервер, где тот системно обрабатывается и конечный результат отсылается клиенту. В возможности сервера входит одновременное обслуживание сразу нескольких клиентов.
Если одновременно поступает более одного запроса, то такие запросы устанавливаются в определенную очередь и сервером выполняются по очереди. Порой запросы могут иметь свои собственные приоритеты. Часть запросов с более высокими приоритетами будут постоянно выполняться в первоочередном порядке!
Параметры, которые могут реализоваться на стороне сервера:
- Хранение, защита и доступ к данным;
- Работа с поступающими клиентскими запросами;
- Процесс отправки ответа клиенту.
Параметры, которые могут реализоваться на стороне клиента:
- Площадка по предоставлению пользовательского графического интерфейса;
- Формулировка запроса к серверу и его последующая отправка;
- Получение итогов запроса и отправка дополнительной группы команд (запросы на добавление, обновление информации, удаление группы данных).
Архитектура системы клиент-сервер формулирует принципы виртуального общения между локальными компьютерами, а все правила и принципы взаимодействия находятся внутри протокола.
Сетевой протокол – это особый набор правил, на основании которого выполняется точное взаимодействие между компьютерами внутри виртуальной сети.
Виды сетевых протоколов
TCP/IP – совокупность протоколов передачи информации. TCP/IP – это особое обозначение всей сети, которая функционирует на основе протоколов TCP, а также IP.
TCP – вид протокола, который является связующим звеном для установки качественного соединения между 2 устройствами, передачи данных и верификации их получения.
IP – протокол, в функции которого входит корректность доставки сообщений по выбранному адресу. При этом информация делится на пакеты, которые могут поставляться по-разному.
MAC – вид протокола, на основании которого происходит процесс верификации сетевых устройств. Все устройства, которые подключены к сети Интернет, содержат свой оригинальный MAC-адрес.
ICMP – протокол, который ответственен за обмен данными, но не используется для процесса передачи информации.
UDP – протокол, управляющий передачей данных, но данные не проходят верификацию при получении. Этот протокол функционирует быстрее, чем протокол TCP.
HTTP – протокол для передачи информации (гипертекста), на базе которого функционируют все сегодняшние сайты. В его возможности входит процесс запрашивания необходимых данных у виртуально удаленной системы (файлы, веб-страницы и прочее).
FTP – протокол передачи информации из особого файлового сервера на ПК конечного пользователя.
POP3 – классический протокол простого почтового соединения, который ответственен за передачу почты.
SMTP – вид протокола, который может устанавливать правила для передачи виртуальной почты. Он ответственен за передачу и верификацию доставки, а также оповещения о возможных ошибках.
Концепции постройки клиент-серверной системы
Слабый клиент – производительный сервер.
При такой модели весь процесс обработки информации перенесен на мощности сервера, а у пользователя права доступа очень строго ограничены. Сервер начинает отправлять ответ, который вообще не требует дополнительной работы по обработке. Клиент взаимодействует с пользователем: создает и отправляет запрос, принимает входящие итоги и выводит данные на экран пользователя.
Сильный клиент.
Концепция, при которой часть обработки данных предоставляет клиенту. В такой ситуации сервер является простым хранилищем информации, а вся деятельность по обработке и предоставлению данных переносится на ПК пользователя.
Продукт или система, которая говорит о том, что часть обрабатывающей информации предоставляется пользователю.
При такой ситуации сервер выступает особым хранилищем информации, а вся деятельность по обработке и предоставлению данных может переноситься на ПК пользователя.
Есть сразу 2 вида клиент-серверных архитектур:
1. Двухуровневая, состоящая сразу из 2 узлов:
- сервер, который ответственен за получение входящих запросов и отправку ответа пользователю, применяя при этом собственные ресурсы системы;
- клиент, который может предоставлять пользовательский графический интерфейс.
Особенности работы заключаются в том, что на сервер приходит определенный запрос, потом его обрабатывают и дают напрямую, без дополнительного применения группы внешних ресурсов.
2. Трехуровневая система состоит из использования таких компонентов:
- предоставление информации – графический пользовательский, прикладной объект в виде сервера приложения;
- менеджмент ресурсов – сервер БД, который может предоставлять данные.
Особенность работы состоит в том, что сразу несколько серверов могут обрабатывать клиентские запросы. Процесс распределения операций может существенным образом снизить нагрузку на используемый сервер.
Трехуровневая архитектура может трансформироваться до многоуровневой, возможностью установки группы дополнительных серверов. Подобная виртуальная архитектура позволяет существенным образом повысить эффективность функционирования информационных систем, а также выполнить оптимизированное распределение части ее программно-аппаратных ресурсов.
Итоги
Нюансы взаимодействия системы клиент-сервер позволяют пользователям разделять определенный функционал и вычислительную нагрузку между подключенными клиентскими веб-продуктами и серверными приложениями при разнообразных процессах тестирования (от тестирования БД до замеров общей производительности системы).
Понимание программистами и тестировщиками внутренней архитектуры приложения позволяют им более качественно не только создавать продукт, но и тестировать его, выполняя полноценные проверки от кросбраузерного соответствия до регрессионных тестов.
О модели взаимодействия клиент-сервер простыми словами. Архитектура «клиент-сервер» с примерами
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику Сервера и протоколы. В этой записи мы поговорим о том, как работают приложения и сайты в сети Интернет, да и вообще в любой компьютерной сети. В основе работы приложения лежит так называемая модель взаимодействия клиент-сервер, которая позволяет разделять функционал и вычислительную нагрузку между клиентскими приложениями (заказчиками услуг) и серверными приложениями (поставщиками услуг).
Модель взаимодействия клиент-сервер. Архитектура «клиент-сервер».
Итак, небольшая аннотация к записи: сначала мы разберемся с концепцией взаимодействия клиент сервер. Затем поговорим о том зачем вообще веб-мастеру нужно понимать модель клиент-сервер. Далее мы посмотрим на архитектуру приложений, которые работают по принципу клиент-сервер и в завершении рассмотрим преимущества и недостатки данной модели.
Концепция взаимодействия клиент-сервер
Содержание статьи:
Миллионы людей каждый день выходят в сеть Интернет, чтобы почитать новости, пообщаться с друзьями, получить полезную информацию, совершить покупку или оплатить счет. Но большая часть рядовых пользователей даже не догадывается о том, как и с помощью чего они всё это делают, да на самом деле большинству людей это и не нужно, главное, чтобы они получали услугу вовремя и качественно.
Здесь мы разберемся с концепцией, которая позволяет нам выполнять все эти действия в сети Интернет. Данная концепция получила название «клиент-сервер». Как понятно из названия, в данной концепции участвуют две стороны: клиент и сервер. Здесь всё как в жизни: клиент – это заказчик той или иной услуги, а сервер – поставщик услуг. Клиент и сервер физически представляют собой программы, например, типичным клиентом является браузер. В качестве сервера можно привести следующие примеры: все HTTP сервера (в частности Apache), MySQL сервер, локальный веб-сервер AMPPS или готовая сборка Denwer (последних два примера – это не проста сервера, а целый набор серверов).
Клиент и сервер взаимодействую друг с другом в сети Интернет или в любой другой компьютерной сети при помощи различных сетевых протоколов, например, IP протокол, HTTP протокол, FTP и другие. Протоколов на самом деле очень много и каждый протокол позволяет оказывать ту или иную услугу. Например, при помощи HTTP протокола браузер отправляет специальное HTTP сообщение, в котором указано какую информацию и в каком виде он хочет получить от сервера, сервер, получив такое сообщение, отсылает браузеру в ответ похожее по структуре сообщение (или несколько сообщений), в котором содержится нужная информация, обычно это HTML документ.
Сообщения, которые посылают клиенты получили названия HTTP запросы. Запросы имеют специальные методы, которые говорят серверу о том, как обрабатывать сообщение. А сообщения, которые посылает сервер получили название HTTP ответы, они содержат помимо полезной информации еще и специальные коды состояния, которые позволяют браузеру узнать то, как сервер понял его запрос.
Сейчас мы схематично описали, как взаимодействуют клиент и сервер на седьмом уровне модели OSI, но, на самом деле это взаимодействие происходит на всех семи уровнях. Когда клиент отправляет запрос, сообщение упаковывается, можно представить, что сообщение заворачивается в семь оберток (хотя их может быть намного больше или же меньше), а когда сообщение получает сервер, он начинает эти обертки разворачивать.
Также стоит заметить, что в основе взаимодействия клиент-сервер лежит принцип того, что такое взаимодействие начинает клиент, сервер лишь отвечает клиенту и сообщает о том может ли он предоставить услугу клиенту и если может, то на каких условиях. Клиентское программное обеспечение и серверное программное обеспечение обычно установлено на разных машинах, но также они могут работать и на одном компьютере.
Данная концепция взаимодействия была разработана в первую очередь для того, чтобы разделить нагрузку между участниками процесса обмена информацией, а также для того, чтобы разделить программный код поставщика и заказчика. Ниже вы можете увидеть упрощенную схему взаимодействия клиент-сервер.
Простая схема взаимодействия клиент-сервер
Мы видим, что к одному серверу может обращаться сразу несколько клиентов (действительно, на одном сайте может находиться несколько посетителей). Также стоит заметить, что количество клиентов, которые могут одновременно взаимодействовать с сервером зависит от мощности сервера и от того, что хочет получить клиент от сервера.
Многие сетевые протоколы построены на архитектуре клиент-сервер, поэтому в их основе обычно лежат одинаковые или схожие принципы взаимодействия, а разницу мы видим лишь в деталях, которые обусловлены особенностями и спецификой области, для которой разрабатывался тот или иной сетевой протокол.
Почему веб-мастеру нужно понимать модель взаимодействия клиент-сервер
Давайте теперь ответим на вопрос: «зачем веб-мастеру или веб-разработчику понимать концепцию взаимодействия клиент-сервер?». Ответ, естественно, очевиден. Чтобы что-то делать своими руками нужно понимать, как это работает. Чтобы сделать сайт и, чтобы он правильно работал в сети Интернет или хотя бы просто работал, нам нужно понимать, как работает сеть Интернет.
Мы уже упоминали, что большая часть сетевых протоколов имеют архитектуру клиент-сервер. Например, веб-мастеру или веб-разработчику будут интересны протоколы седьмого и шестого уровня эталонной модели. Сетевым администраторам важно понимать, как происходит взаимодействие на уровнях с пятого по второй. Для инженеров связи наибольший интерес представляют протоколы с четвертого по первый уровень модели OSI.
Поэтому если вы действительно хотите быть профессионалом в сфере web, то сперва вам необходимо понимать, как происходит взаимодействии в сети (именно на седьмом уровне), а уже потом начинать изучать инструменты, которые позволят создавать сайты.
Архитектура «клиент-сервер»
Архитектура клиент-сервер определяет лишь общие принципы взаимодействия между компьютерами, детали взаимодействия определяют различные протоколы. Данная концепция нам говорит, что нужно разделять машины в сети на клиентские, которым всегда что-то надо и на серверные, которые дают то, что надо. При этом взаимодействие всегда начинает клиент, а правила, по которым происходит взаимодействие описывает протокол.
Существует два вида архитектуры взаимодействия клиент-сервер: первый получил название двухзвенная архитектура клиент-серверного взаимодействия, второй – многоуровневая архитектура клиент-сервер (иногда его называют трехуровневая архитектура или трехзвенная архитектура, но это частный случай).
Принцип работы двухуровневой архитектуры взаимодействия клиент-сервер заключается в том, что обработка запроса происходит на одной машине без использования сторонних ресурсов. Двухзвенная архитектура предъявляет жесткие требования к производительности сервера, но в тоже время является очень надежной. Двухуровневую модель взаимодействия клиент-сервер вы можете увидеть на рисунке ниже.
Двухуровневая модель взаимодействия клиент-сервер
Здесь четко видно, что есть клиент (1-ый уровень), который позволяет человеку сделать запрос, и есть сервер, который обрабатывает запрос клиента.
Если говорить про многоуровневую архитектуру взаимодействия клиент-сервер, то в качестве примера можно привести любую современную СУБД (за исключением, наверное, библиотеки SQLite, которая в принципе не использует концепцию клиент-сервер). Суть многоуровневой архитектуры заключается в том, что запрос клиента обрабатывается сразу несколькими серверами. Такой подход позволяет значительно снизить нагрузку на сервер из-за того, что происходит распределение операций, но в то же самое время данный подход не такой надежный, как двухзвенная архитектура. На рисунке ниже вы можете увидеть пример многоуровневой архитектуры клиент-сервер.
Многоуровневая архитектура взаимодействия клиент-сервер
Типичный пример трехуровневой модели клиент-сервер. Если говорить в контексте систем управления базами данных, то первый уровень – это клиент, который позволяет нам писать различные SQL запросы к базе данных. Второй уровень – это движок СУБД, который интерпретирует запросы и реализует взаимодействие между клиентом и файловой системой, а третий уровень – это хранилище данных.
Если мы посмотрим на данную архитектуру с позиции сайта. То первый уровень можно считать браузером, с помощью которого посетитель заходит на сайт, второй уровень – это связка Apache + PHP, а третий уровень – это база данных. Если уж говорить совсем просто, то PHP больше ничего и не делает, кроме как, гоняет строки и базы данных на экран и обратно в базу данных.
Преимущества и недостатки архитектуры клиент-сервер
Преимуществом модели взаимодействия клиент-сервер является то, что программный код клиентского приложения и серверного разделен. Если мы говорим про локальные компьютерные сети, то к преимуществам архитектуры клиент-сервер можно отнести пониженные требования к машинам клиентов, так как большая часть вычислительных операций будет производиться на сервере, а также архитектура клиент-сервер довольно гибкая и позволяет администратору сделать локальную сеть более защищенной.
К недостаткам модели взаимодействия клиент-сервер можно отнести то, что стоимость серверного оборудования значительно выше клиентского. Сервер должен обслуживать специально обученный и подготовленный человек. Если в локальной сети ложится сервер, то и клиенты не смогут работать (в качестве частного случая можно привести пример: мощности сервера не всегда хватает, чтобы удовлетворит запросы клиентов, если вы хоть раз работали с биллинговыми системами, то понимаете о чем я: время ожидания ответа от сервера может быть очень большим).
В качестве заключения нам стоит явно акцентировать внимание на том, что архитектура клиент-сервер не делит машины на только клиент или только сервер, а скорее позволяет распределить нагрузку и разделить функционал между клиентской частью и серверной.
Что такое трехуровневая архитектура — Российская Федерация
Трехуровневая архитектура, предусматривающая разделение приложений на три логических и физических вычислительных уровня, является самой распространенной архитектурой программного обеспечения для традиционных клиент-серверных приложений.
Что такое трехуровневая архитектура?
Трехуровневая архитектура — это широко применяемая архитектура программного обеспечения в которой приложения разделены на три логических и физических уровня: уровень представления (пользовательский интерфейс), уровень приложения, на котором осуществляется обработка данных, и уровень данных, предназначенный для хранения и управления данными, относящимися к приложению.
Основное преимущество трехуровневой архитектуры заключается в том, что поскольку каждый уровень имеет собственную инфраструктуру, разработкой каждого уровня может заниматься отдельная команда разработчиков. Кроме того, каждый уровень можно обновлять и масштабировать по мере необходимости, не затрагивая другие уровни.
На протяжении десятилетий трехуровневая архитектура оставалась самой распространенной архитектурой для клиент-серверных приложений. Сегодня большинство трехуровневых архитектур подлежат модернизации с использованием облачных технологий, таких как контейнеры и микросервисы, а также требуют миграции в облако.
Подробное описание трех уровней
Уровень представления
На уровне представления обеспечивается взаимодействие с пользователем приложения — это пользовательский интерфейс и уровень обмена данными. Его основное предназначение состоит в отображении информации и получении информации от пользователя. Этот уровень может работать в веб-браузере или как графический пользовательский интерфейс компьютерного или мобильного приложения. Уровни представления веб-приложений обычно разрабатываются с помощью HTML, CSS и JavaScript. Компьютерные и мобильные приложения могут быть написаны на любом языке в зависимости от платформы.
Уровень приложений
Уровень приложения, также известный как логический или промежуточный уровень, является центральным звеном приложения. На этом уровне обрабатывается информация, собранная на уровне представления — иногда с учетом другой информации из уровня данных — с помощью бизнес-логики, которая представляет собой набор бизнес-правил. Кроме того, уровень приложения может добавлять, изменять и удалять данные, расположенные на уровне данных.
Как правило, уровень приложения разрабатывается с помощью Python, Java, Perl, PHP или Ruby и взаимодействует с уровнем данных посредством вызовов API.
Уровень данных
Уровень данных, который также называется уровнем базы данных, уровнем доступа к данным или базовым уровнем, предназначен для хранения и управления информацией, обработанной приложением. Его роль может выполнять реляционная система управления базами данных, такая как PostgreSQL, MySQL, MariaDB, Oracle, DB2, Informix или Microsoft SQL Server, либо сервер базы данных NoSQL, такой как Cassandra, CouchDB или MongoDB.
В трехуровневом приложении обмен данными осуществляется только через уровень приложения. Уровень представления и уровень данных не могут взаимодействовать друг с другом напрямую.
Слои и уровни
В контексте трехуровневой архитектуры термины уровень (tier) и слой (layer) часто используются как взаимозаменяемые, однако это не совсем справедливо.
Между ними следует делать различие. «Слой» разделяет части программы по функциональному признаку, а «уровни» не только имеют разный функционал, но и работают в независимой от других уровней инфраструктуре. Например, приложение Контакты на вашем телефоне представляет собой трехслойное приложение, но вместе с тем оно является одноуровневым, поскольку все три слоя работают на телефоне.
Эта разница имеет важное значение, поскольку слои не позволяют получить те преимущества, которые дает разделение по уровням.
Преимущества трехуровневой архитектуры
Итак, главным преимуществом трехуровневой архитектуры является логическое и физическое разделение функциональных возможностей. Каждый уровень можно запустить в отдельной операционной системе и серверной платформе (веб-сервер, сервер приложений, сервер базы данных), наилучшим образом соответствующей его функциональным требованиям. Поскольку каждый уровень выполняется по крайней мере на одном выделенном аппаратном или виртуальном сервере, уровни можно настраивать и оптимизировать независимо друг от друга.
Другие преимущества (по сравнению с одноуровневой и двухуровневой архитектурой):
- Более быстрая разработка: поскольку разработкой уровней одновременно занимаются разные команды, организация может быстрее вывести приложение на рынок, а программисты могут использовать наилучшим образом подходящие языки и инструменты для каждого уровня.
- Улучшенная масштабируемость: каждый уровень можно масштабировать независимо от других в соответствии с потребностями.
- Повышенная надежность: сбой одного из уровней не повлияет на доступность и производительность других уровней.
- Высокий уровень безопасности: поскольку уровень представления и уровень данных не могут напрямую взаимодействовать друг с другом, хорошо спроектированный уровень приложения может выполнять роль своего рода внутреннего брандмауэра, предотвращая внедрение кода SQL и другие вредоносные действия.
Трехуровневое приложение в веб-разработке
В случае веб-разработки уровни называются по-другому, но выполняют аналогичные функции:
- Веб-сервер соответствует уровню представления и обеспечивает пользовательский интерфейс. Как правило, это веб-страница или веб-сайт, такой как сайт интернет-магазина, на котором пользователь добавляет товары в корзину, указывает платежные реквизиты или создает учетную запись. Содержимое веб-страниц может быть статическим или динамическим и обычно разрабатывается с помощью HTML, CSS и Javascript.
- Сервер приложений соответствует промежуточному уровню, на котором размещается бизнес-логика, применяемая для обработки указанной пользователей информации. Если продолжить пример с интернет-магазином, то этот уровень запрашивает наличие товаров в базе данных запасов или добавляет сведения в профайл клиента. Обычно этот уровень разрабатывается с помощью Python, Ruby или PHP и выполняется в такой среде, как Django, Rails, Symphony или ASP.NET.
- Сервер базы данных — это уровень данных или уровень «бэкенда» веб-приложения. Он использует программное обеспечение управления базой данных, такое как MySQL, Oracle, DB2 или PostgreSQL.
Другие многоуровневые архитектуры
Несмотря на доминирующее положение трехуровневой архитектуры, в своей работе вы можете встретиться с другими вариантами многоуровневых архитектур приложений.
Двухуровневая архитектура
Двухуровневая архитектура — это изначальный вариант клиент-серверной архитектуры, состоящей из слоя представления и слоя данных; бизнес-логика может находиться в слое представления и/или в слое данных. В случае двухуровневой архитектуры слой представления, а следовательно и конечный пользователь, обладают прямым доступом к слою данных и возможности бизнес-логики часто ограничивается. В качестве примера двухуровневого приложения можно привести простое приложение для управления контактами, в котором пользователи вводят и извлекают контактную информацию.
N-уровневая архитектура
В общем случае N-уровневая архитектура, также называемая многоуровневой архитектурой, представляет собой любую архитектуру приложений, имеющую больше одного уровня. Однако приложения более чем с тремя уровнями встречаются крайне редко, поскольку дополнительные уровни не дают существенных преимуществ и могут сделать приложение более медленным, сложным в управлении и дорогим в обслуживании. Таким образом, n-уровневая архитектура и многоуровневая архитектура обычно являются синонимами трехуровневой архитектуры.
Трехуровневая архитектура и IBM Cloud
IBM Cloud предлагает продукты и услуги, помогающие модернизировать устаревшие трехуровневые приложения в процессе перехода в облако.
Сделайте первый шаг:
- Независимо от того, требуется ли вам помощь со стратегией, процессами или функциями либо полный спектр услуг, узнайте, как IBM может помочь вам с успехом провести модернизацию приложений.
- Начните с контейнеризованного промежуточного программного обеспечения, которое можно развернуть в любом облаке — воспользуйтесь предложениями IBM Cloud Pak.
- С легкостью перенесите существующие приложения VMWare в общедоступное облако с помощью IBM Cloud for VMware Solutions.
- Разработайте и выполните стратегии модернизации приложений в рамках текущей программы цифровой трансформации с помощью услуг IBM по модернизации приложений.
Начните работу с учетной записью IBM Cloud прямо сегодня.
Архитектура клиент-сервер | BUGZA
Веб-приложение – это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер (в широком смысле).
Основная часть приложения, как правило, находится на стороне веб-сервера, который обрабатывает полученные запросы в соответствии с бизнес-логикой продукта и формирует ответ, отправляемый пользователю. На этом этапе в работу включается браузер, именно он преобразовывает полученный ответ от сервера в графический интерфейс, понятный пользователю.
Архитектура «клиент-сервер» определяет общие принципы организации взаимодействия в сети, где имеются серверы, узлы-поставщики некоторых специфичных функций (сервисов) и клиенты (потребители этих функций).
Практические реализации такой архитектуры называются клиент-серверными технологиями.
Двухзвенная архитектура — распределение трех базовых компонентов между двумя узлами (клиентом и сервером). Двухзвенная архитектура используется в клиент-серверных системах, где сервер отвечает на клиентские запросы напрямую и в полном объеме.
Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры:
- Сервер терминалов — распределенное представление данных.
- Файл-сервер — доступ к удаленной базе данных и файловым ресурсам.
- Сервер БД — удаленное представление данных.
- Сервер приложений — удаленное приложение.
Клиент – это браузер, но встречаются и исключения (в тех случаях, когда один веб-сервер (ВС1) выполняет запрос к другому (ВС2), роль клиента играет веб-сервер ВС1). В классической ситуации (когда роль клиента выполняет браузер) для того, чтобы пользователь увидел графический интерфейс приложения в окне браузера, последний должен обработать полученный ответ веб-сервера, в котором будет содержаться информация, реализованная с применением HTML, CSS, JS (самые используемые технологии). Именно эти технологии «дают понять» браузеру, как именно необходимо «отрисовать» все, что он получил в ответе.
Веб-сервер – это сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает. Наиболее распространенными видами ПО веб-серверов являются Apache, IIS и NGINX. На веб-сервере функционирует тестируемое приложение, которое может быть реализовано с применением самых разнообразных языков программирования: PHP, Python, Ruby, Java, Perl и пр.
База данных фактически не является частью веб-сервера, но большинство приложений просто не могут выполнять все возложенные на них функции без нее, так как именно в базе данных хранится вся динамическая информация приложения (учетные, пользовательские данные и пр).
База данных — это информационная модель, позволяющая упорядоченно хранить данные об объекте или группе объектов, обладающих набором свойств, которые можно категоризировать. Базы данных функционируют под управлением так называемых систем управления базами данных (далее – СУБД). Самыми популярными СУБД являются MySQL, MS SQL Server, PostgreSQL, Oracle (все – клиент-серверные).
Трехзвенная архитектура — сетевое приложение разделено на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате.
Третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом:
- Представление данных — на стороне клиента.
- Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО).
- Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные.
Трехзвенная архитектура может быть расширена до многозвенной (N-tier, Multi-tier) путем выделения дополнительных серверов, каждый из которых будет представлять собственные сервисы и пользоваться услугами прочих серверов разного уровня.
Двухзвенная архитектура проще, так как все запросы обслуживаются одним сервером, но именно из-за этого она менее надежна и предъявляет повышенные требования к производительности сервера.
Трехзвенная архитектура сложнее, но, благодаря тому, что функции распределены между серверами второго и третьего уровня, эта архитектура предоставляет:
- Высокую степень гибкости и масштабируемости.
- Высокую безопасность (т.к. защиту можно определить для каждого сервиса или уровня).
- Высокую производительность (т.к. задачи распределены между серверами).
Архитектура «Клиент-Сервер»
Определение
Архитектура «Клиент-Сервер» (также используются термины «сеть Клиент-Сервер» или «модель Клиент-Сервер») предусматривает разделение процессов предоставление услуг и отправки запросов на них на разных компьютерах в сети, каждый из которых выполняют свои задачи независимо от других.
В архитектуре «Клиент-Сервер» несколько компьютеров-клиентов (удалённые системы) посылают запросы и получают услуги от централизованной служебной машины – сервера (server – англ. «официант, обслуга»), которая также может называться хост-системой (host system, от host – англ. «хозяин», обычно гостиницы).
Клиентская машина предоставляет пользователю т.н. «дружественный интерфейс» (user-friendly interface), чтобы облегчить его взаимодействие с сервером.
Рис. 1. Архитектура «Клиент-Сервер».
Типы клиент-серверной архитектуры
Архитектуру «клиент-сервер» принято разделять на три класса: одно-, двух- и трёхуровневую. Однако, нельзя сказать, что в вопросе о таком разделении в сообществе ИТ-специалистов существует полный консенсус. Многие называют одноуровневую архитектуру двухуровневой и наоборот, то же можно сказать о соотношении двух- и трёхуровневой архитектур.
Постараемся внести ясность в этот вопрос.
Одноуровневая архитектура (1-Tier)
Одноуровневая архитектура «клиент-сервер» (1-Tier) – такая, где все прикладные программы рассредоточены по рабочим станциям, которые обращаются к общему серверу баз данных или к общему файловому серверу. Никаких прикладных программ сервер при этом не исполняет, только предоставляет данные.
Рис. 2. Одноуровневая архитектура «клиент-сервер» (1-Tier).
В целом, такая архитектура очень надёжна, однако, ей сложно управлять, поскольку в каждой рабочей станции данные будут присутствовать в разных вариантах. Поэтому возникает проблема их синхронизации на отдельных машинах. В общем, как можно видеть из рисунка, в этой архитектуре просматривается ещё один уровень – базы данных, что даёт повод во многих случаях называть её двухуровневой.
Двухуровневая архитектура (2-Tier)
К двухуровневой архитектуре «клиент-сервер» следует относить такую, в которой прикладные программы сосредоточены на сервере приложений (Application Server), например, сервере 1С или сервере CRM, а в рабочих станциях находятся программы-клиенты, которые предоставляют для пользователей интерфейс для работы с приложениями на общем сервере.
Рис. 3. Двухуровневая архитектура «клиент-сервер» (2-Tier).
Такая архитектура представляется наиболее логичной для архитектуры «клиент-сервер». В ней, однако, можно выделить два варианта. Когда общие данные хранятся на сервере, а логика их обработки и бизнес-данные хранятся на клиентской машине, то такая архитектура носит название “fat client thin server” (толстый клиент, тонкий сервер). Когда не только данные, но и логика их обработки и бизнес-данные хранятся на сервере, то это называется “thin client fat server” (тонкий клиент, толстый сервер). Такая архитектура послужила прообразом облачных вычислений (Cloud Computing).
Преимущества двухуровневой архитектуры:
- Легко конфигурировать и модифицировать приложения;
- Пользователю обычно легко работать в такой среде;
- Хорошая производительность и масштабируемость.
Однако, у двухуровневой архитектуры есть и ограничения:
- Производительность может падать при увеличении числа пользователей;
- Потенциальные проблемы с безопасностью, поскольку все данные и программы находятся на центральном сервере;
- Все клиенты зависимы от базы данных одного производителя;
Трёхуровневая архитектура (3-Tier)
В трёхуровневой архитектуре сервер баз данных, файловый сервер и другие представляют собой отдельный уровень, результаты работы которого использует сервер приложений. Логика данных и бизнес-логика находятся в сервере приложений. Все обращения клиентов к базе данных происходят через промежуточное программное обеспечение (middleware), которое находится на сервере приложений. Вследствие этого, повышается гибкость работы и производительность.
Рис. 4. Трёхуровневая архитектура «клиент-сервер» (3-Tier).
Преимущества трёхуровневой архитектуры:
- Целостность данных;
- Более высокая безопасность, по сравнению с двухуровневой архитектурой;
- Защищённость базы данных от несанкционированного проникновения.
Ограничения:
- Более сложная структура коммуникаций между клиентов и сервером, поскольку в нём также находится middleware.
Многоуровневая архитектура (N-Tier)
В отдельный класс архитектуры «клиент-сервер» можно вынести многоуровневую архитектуру, в которой несколько серверов приложений используют результаты работы друг друга, а также данные от различных серверов баз данных, файловых серверов и других видов серверов.
По сути, предыдущий вариант, трёхуровневая архитектура – не более, чем частный случай многоуровневой архитектуры.
Рис. 5. Многоуровневая архитектура «клиент-сервер» (N-Tier).
Преимуществом многоуровневой архитектуры является гибкость предоставления услуг, которые могут являться комбинацией работы различных приложений серверов разных уровней и элементов этих приложений.
Очевидным недостатком является сложность, многокомпонентность такой архитектуры.
Характеристики архитектуры «клиент-сервер»
- Асимметричность протоколов. Между клиентами и сервером существуют отношения «один ко многим». Инициатором диалога с сервером обычно является клиент.
- Инкапсуляция услуг. После получения запроса на услугу от клиента, сервер решает, как должна быть выполнена данная услуга. Модификация («апгрейд») сервера может производиться без влияния на работу клиентов, поскольку это не влияет на опубликованный интерфейс взаимодействия между ними. Иными словами, максимум, что может при этом почувствовать пользователь – незначительная задержка отклика сервера в течение небольшого времени апгрейда.
- Целостность. Программы и общие данные для сервера управляются централизованно, что снижает стоимость обслуживания и защищает целостность данных. В то же время, данные клиентов остаются персонифицированными и независимыми.
- Местная прозрачность. Сервер – это программный процесс, который может исполняться на той же машине, что и клиент, либо на другой машине, подключенной по сети. Программное обеспечение «клиент-сервер» обычно скрывает местоположение сервера от клиентов, перенаправляя запрос на услуги через сеть.
- Обмен на основе сообщений. Клиенты и сервер являются нежёстко связанными («loosely-coupled») процессами, которые обмениваются сообщениями: запросами на услуги и ответами на них.
- Модульный дизайн, способный к расширению. Модульный дизайн программной платформы «клиент-сервер» придаёт ей устойчивость к отказам, то есть, отказ в каком-то модуле не вызывает отказа всего приложения. В такой системе, один или больше серверов могут отказать без остановки всей системы в целом, до тех пор, пока услуги отказавшего сервера могут быть предоставлены с резервного сервера. Другое преимущество модульности в том, что приложение «клиент-сервер» может автоматически реагировать на повышение или понижение нагрузки на систему, путём добавления или отключения услуг или серверов.
- Независимость от платформы. Идеальное приложение «клиент-сервер» не зависит от платформ оборудования или операционной системы. Клиенты и серверы могут развёртываться на различных аппаратных платформах и разных операционных системах.
- Масштабируемость. Системы «клиент-сервер» могут масштабироваться как горизонтально (по числу серверов и клиентов), так и вертикально (по производительности и спектру услуг).
- Разделение функционала. Система «клиент-сервер» — это соотношение между процессами, работающими на одной или на разных машинах. Сервер – это процесс предоставления услуг. Клиент – это потребитель услуг.
- Общее использование ресурсов. Один сервер может предоставлять услуги множеству клиентов одновременно, и регулировать их доступ к совместно используемым ресурсам.
Практические применения архитектуры «клиент-сервер»
Архитектуры «клиент-сервер» — один из основных принципов работы сети Интернет. Любой веб-сайт, или приложение в Интернет работает на сервере, а его пользователи являются клиентами. Социальные сети (Фейсбук, ВК и пр.), сайты электронной коммерции (Amazon, Озон и др.) , мобильные приложения (Instagram и т.д.), устройства Интернета вещей (умные колонки или смарт-часы) работают на основе клиент-серверной архитектуры.
Хорошим примером работы системы «клиент-сервер» является автомобильный навигатор. Приложение навигации на сервере собирает данные с многих смартфонов пользователей, на которых установлены клиенты приложения. Кроме того, приложение навигации использует ещё и данные с сервера базы данных – геоинформационной системы, который предоставляет данные, например, о текущих ремонтах дорог, о появлении новых дорог и пр. Данные со многих клиентов (местоположение, скорость) обрабатывается сервером навигации и выдаётся на смартфоны пользователей в виде информации о средней скорости движения по тому или иному участку маршрута.
Практически любая корпоративная сеть или ИТ-система предприятия, как правило, строится по архитектуре «клиент-сервер». В небольших сетях (3-5 компьютеров в компании) функции сервера может выполнять один из рабочих компьютеров. Если число машин в организации более 10, то лучше сделать выделенный сервер (почтовый сервер, приложений, баз данных и пр.), который будет заниматься обслуживанием клиентов – компьютеров и телефонов сотрудников организации.
В домашних сетях архитектура «клиент-сервер» тоже используется довольно часто. Например, в домашнюю сеть могут быть объединены компьютеры членов семьи, один из которых выполняет функции сервера. В домашнюю сеть также могут быть включены такие устройства, как умные колонки, умные домашние устройства (пылесосы-роботы, фотоаппараты, DVD-плееры и пр.), а также «умные» счётчики (вода, электричество) и т.д. Тогда в системе управления сервера, будут видны все параметры, данные и медифайлы (музыка, видео, фото), а также «умные устройства».
Преимущества и недостатки архитектуры «клиент-сервер»
К преимуществам архитектуры «клиент-сервер» можно отнести:
- Централизованность, поскольку все данные и управление сосредоточены в центральном сервере;
- Информационная безопасность, поскольку ресурсы общего пользования администрируются централизованно;
- Производительность, использование выделенного сервера повышает скорость работы ресурсов общего пользования;
- Масштабируемость, количество клиентов и серверов можно увеличивать независимо друг от друга.
К недостаткам архитектуры «клиент-сервер» следует отнести:
- Перегрузку трафика в сети, что является главной проблемой в сетях «клиент-сервер». Когда большое число клиентов одновременно запрашивают одну услугу на сервере, то число запросов может создать перегрузку в сети;
- Наличие единой точки отказа в небольших сетях с одним сервером. Если он отказывает, все клиенты остаются без обслуживания;
- Превышение пределов ресурсов сервера, когда новые клиенты, запрашивающие услугу, остаются без обслуживания. В таких случаях, требуется срочное расширение ресурсов сервера;
- Иногда клиентские программы могут не работать на терминалах пользователей, если не установлены соответствующие драйверы. Например, пользователь посылает запрос на печать документа, а на сервере нет подходящего драйвера для печати данного формата документа на определённом принтере.
Заключение
В настоящее время можно встретить термин Serverless Architecture, т.н. «бессерверная архитектура». Однако, по сути, она представляет собой процесс получения функций сервера в виде облачной услуги. То есть, серверы в облаке тоже есть, но для конечного пользователя они не видны, и он получает их сервисы в виде абстрактной «функции как услуги» FaaS (Function as a Service).
Архитектура «клиент-сервер» является основой большинства корпоративных сетей и берёт свое начало от самых первых вычислительных машин, т.н. «мэйнфреймов». Программное обеспечение для локальных компьютерных сетей, подавляющее большинство которых основано на архитектуре «клиент-сервер», начало создаваться около 50 лет назад.
Дальнейшее развитие информационных технологий также будет происходить в значительной степени с использованием архитектуры «клиент-сервер».
Архитектура клиент-сервер — это… Что такое Архитектура клиент-сервер?
- Архитектура клиент-сервер
- Архитектура клиент-сервер
- Архитектура клиент-сервер — архитектура распределенной вычислительной системы, в которой приложение делится на клиентский и серверный процессы.
В зависимости от того, как распределены логические компоненты приложения между клиентами и серверами, различают четыре модели архитектуры клиент-сервер:
— модель «файл-сервер»;
— модель «сервер базы данных»;
— модель «сервер транзакций»;
— модель «сервер приложений».По-английски: Client-server architecture
Синонимы: Модель клиент-сервер
Синонимы английские: Client-server model
Финансовый словарь Финам.
.
- Архитектура информационной системы
- Архитектура программной системы
Смотреть что такое «Архитектура клиент-сервер» в других словарях:
архитектура клиент-сервер — Логическое продолжение концепции модульного программирования. Модуль клиент (программа), установленный на ПК пользователя, запрашивает сервис (например получение информации из базы данных) у модуля сервера (программы), расположенного на другом… … Справочник технического переводчика
архитектура “клиент-сервер” — архитектура “клиент сервер” Архитектура, в которой используется два типа сетевых объектов: клиенты (рабочие станции) и серверы (обслуживающие узлы сети). Установление соединения осуществляется по инициативе клиентов, посылающих… … Справочник технического переводчика
Архитектура клиент-сервер — … Википедия
CLIENT,SERVER ARCHITECTURE — архитектура клиент-сервер — способ организации взаимодействия программ или компонентов многокомпонентной программы, подразумевающий наличие программы или компонента программы, называемого сервером, и одной или несколько других программ или компонентов, называемых клиентами … Словарь электронного бизнеса
Клиент-сервер — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей … Википедия
Клиент — сервер — (англ. Client server) сетевая архитектура, в которой устройства являются либо клиентами, либо серверами. Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) машина, которая отвечает на запрос. Оба термина (клиент и … Википедия
КЛИЕНТ-СЕРВЕР — Вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через… … Словарь бизнес-терминов
Технология «клиент-сервер» — Клиент сервер (англ. Client server) вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами.… … Википедия
Технология «клиент-сервер» — Клиент сервер ( en. Client server) сетевая архитектура, в которой устройства являются либо клиентами, либо серверами. Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) машина, которая отвечает на запрос. Оба… … Википедия
Процесс исполнения клиент-сервер — Подсистема клиент/сервер времени выполнения (англ. Client/Server Runtime Subsystem, CSRSS) или csrss.exe, входит в состав операционной системы Microsoft Windows NT, и предоставляет собой часть пользовательского режима подсистемы Win32.… … Википедия
Что такое архитектура клиент-сервер: схема, типы, примеры, компоненты
Определение — Архитектура клиент-сервер также называется « сеть клиент / сервер » или « модель сетевых вычислений », потому что в В этой архитектуре все сервисы и запросы распространяются по сети. Его функциональность похожа на распределенную вычислительную систему , потому что все компоненты выполняют свои задачи независимо друг от друга.
Клиент-серверная архитектура — это общая архитектура компьютерной сети , в которой несколько клиентов (удаленная система) отправляют множество запросов и, наконец, получают услуги с централизованной серверной машины (хост-системы). Клиентская машина предоставляет удобный интерфейс, который помогает пользователям запускать службы запросов на серверном компьютере и, наконец, отображать ваши результаты в клиентской системе.
Схема архитектуры клиент-сервер
Одноуровневая архитектура
В одноуровневой архитектуре существуют все настройки конфигурации клиент / сервер, среда пользовательского интерфейса, логика данных и система маркетинговой логики в той же системе.Эти типы сервисов надежны, но с ними очень сложно справиться, потому что они содержат все данные с разной дисперсией, которые предназначены для репликации всей работы. Эта архитектура также содержит разные уровни.
Например, — Уровень представления, бизнеса, доступа к данным с использованием единого программного пакета. Все данные сохраняются на локальной машине . Некоторые приложения, управляющие всеми тремя уровнями, например MP3-плеер, MS Office; но эти типы приложений представлены в виде приложений с одноуровневой архитектурой.
Двухуровневая архитектура
Двухуровневая архитектура обеспечивает лучшую среду клиент / сервер, которая помогает хранить пользовательский интерфейс в клиентской системе, а вся база данных сохраняется на сервере . Бизнес-логика и логика базы данных существуют на клиенте, в противном случае на сервере, но они должны поддерживаться. Когда логика данных и бизнес собираются на клиентском терминале, это известно как «архитектура тонкого сервера толстого клиента». Но если бизнес-логика и логика данных контролируются на сервере, то это известно как «архитектура толстого сервера с тонким клиентом».
В этой архитектуре клиентские и серверные машины связаны напрямую включением, потому что если клиент запускает какой-либо ввод для серверного терминала, то между ними не должно быть никаких промежуточных. Таким образом, он обеспечивает максимальную скорость вывода и игнорирует недопонимание между другими клиентами. Например, — программа онлайн-бронирования билетов, в которой используется двухуровневая архитектура.
Преимущества
- Простота проектирования всех приложений
- Максимальное удовлетворение пользователей
- Внедрение однородной среды
Ограничения
- Низкая производительность из-за роста числа подключения каждого пользователя
- Все клиенты полностью зависят от базы данных производителя.
- Меньшая переносимость означает, что эта архитектура полностью зависит от конкретной базы данных.
Трехуровневая архитектура
В этой трехуровневой архитектуре требуется промежуточное ПО , потому что если клиентский компьютер отправляет запрос на серверный компьютер, то сначала этот запрос принимается на промежуточном уровне, и, наконец, этот запрос получено на сервер. Итак, сначала ответ сервера принимается средним уровнем, а затем он поступает на клиентскую машину.Вся логика данных и бизнес-логика хранятся в промежуточном программном обеспечении. За счет использования промежуточного программного обеспечения для повышения его гибкости и обеспечения отличной производительности.
Трехуровневая архитектура разделена на 3 уровня, таких как уровень представления (клиентский уровень), прикладной уровень (бизнес-уровень) и уровень базы данных (уровень данных). Клиентская машина обрабатывает уровень представления, прикладной уровень управляет прикладным уровнем, и, наконец, серверная машина заботится об уровне базы данных.
Преимущества
- Наилучшая целостность данных
- Повышенная безопасность для двухуровневой архитектуры
Ограничение:
Для увеличения сложности обмена данными между клиентом и сервером, поскольку в какое промежуточное программное обеспечение также используется
N-уровневая архитектура
Эта архитектура также известна как «многоуровневая архитектура», поэтому представляет собой масштабируемую трехуровневую архитектуру.В этой архитектуре все функции презентаций, обработки приложений и управления данными изолированы друг от друга.
Benefit is
Он предоставляет гибкие и многоразовые приложения.
Ограничение:
Труднее реализовать, потому что он использует сложную структуру (разбиение на уровни)
Существует четыре примера клиент-серверной архитектуры . Ниже объясните каждый из них —
Веб-серверы — Веб-сервер нравится как высокопроизводительная компьютерная система, которая может размещать несколько веб-сайтов.На этом сервере можно установить различные типы программного обеспечения веб-серверов, например Apache или Microsoft IIS, которые обеспечивают доступ к нескольким размещенным веб-сайтам в Интернете, и эти серверы связаны с Интернетом через высокоскоростное соединение, обеспечивающее сверхвысокую скорость передачи данных.
Почтовые серверы — Почтовые серверы помогают отправлять и получать все электронные письма. Некоторое программное обеспечение запускается на почтовом сервере, что позволяет администратору создавать и обрабатывать все учетные записи электронной почты для любого домена, размещенного на сервере.Почтовые серверы используют некоторые протоколы для отправки и получения электронной почты, такие как SMTP, IMAP и POP3. Протокол SMTP помогает запускать сообщения и управляет всеми исходящими электронными запросами. IMAP и POP3 помогают получать все сообщения и обрабатывать все входящие письма.
Файловые серверы — Файловый сервер — это выделенная система, которая позволяет пользователям получать доступ ко всем файлам. Он работает как централизованное хранилище файлов, и к нему могут получить доступ несколько терминальных систем.
DNS — DNS означает «сервер доменных имен», и он имеет огромную базу данных различных типов общедоступных IP-адресов, и они связаны с их именами хостов.
Эти типы серверов помогают доставлять все ресурсы (например, как файлы, каталоги, общие устройства, такие как приложения и принтеры) на клиентский терминал, например, ПК, смартфоны, КПК, ноутбуки, планшеты и т. д.
Клиент-серверная архитектура содержит три компонента, такие как рабочие станции , сервер и сетевые устройства , и они связаны друг с другом.
Рабочая станция — Рабочая станция также известна как «Клиентский компьютер ». Существуют различные типы операционных систем , которые устанавливаются на рабочие станции, такие как Windows 2000, Windows XP, Windows Vista, Windows 7 и Windows 10. Эти операционные системы для рабочих станций дешевле по сравнению с серверными операционными системами.
Server — Server — это высокопроизводительная компьютерная система, которая содержит самую быструю память, больше места на жестком диске и высокоскоростные процессоры , поскольку они сохраняют и обслуживают несколько запросов, поступающих со стороны рабочей станции. Сервер одновременно играет разные типы ролей, например, почтовый сервер, сервер базы данных, файловый сервер и контроллер домена.
Сетевые устройства — С помощью сетевых устройств; Между собой подключено рабочих станций и серверов.Каждое сетевое устройство имеет собственные функции, например, концентратор используется для соединения между сервером и несколькими рабочими станциями, ретранслятор используется для передачи данных с одного устройства на другое, а мосты помогают изолировать все сегменты сети.
Архитектура клиент-сервер — обзор
11.1.1 Архитектура клиент / сервер
Из рисунка 11.4 довольно легко понять механизмы архитектуры клиент / сервер. Программное обеспечение или приложение, установленное на клиентском компьютере (ПК, настольном или портативном компьютере), является внешним интерфейсом приложения.Он управляет локальными клиентскими ресурсами, такими как монитор, клавиатура, мышь, ОЗУ, ЦП и другие периферийные устройства. Если мы заменим его виртуализированной инфраструктурой, инфраструктурой удаленного виртуального рабочего стола (VDI), он станет облачным VDI.
По сравнению с терминалами мэйнфреймов, клиент больше не тупая машина. Он стал более мощным ПК, потому что у него есть собственная вычислительная среда. Клиент может считаться заказчиком, обращающимся за услугами. Сервер похож на поставщика услуг, который обслуживает множество клиентов.
На другой стороне клиент-серверной архитектуры находится сервер. Функция серверной машины — выполнять. все запросы клиентов. Это означает, что сервисы, предоставляемые сервером, могут совместно использоваться разными клиентами. Сервер (или серверы) обычно находится в централизованном месте, а именно в центре обработки данных, но мы также называем его серверной или сетевой комнатой, комнатой локальной сети, коммутационным шкафом или сетевым хранилищем. Это действительно зависит от размера парка серверов. Связь между клиентами и серверами осуществляется либо через выделенную сеть, либо через Интернет.Теоретически все серверы полностью прозрачны для клиентов. Связь между клиентом и сервером основана на стандартных протоколах, таких как Ethernet или TCP / IP. Как только клиенты инициируют запросы на обслуживание, сервер будет отвечать и выполнять эти запросы, такие как извлечение данных, обновление, отправка, хранение и удаление. Разные серверы могут предлагать разные услуги. Файловый сервер предоставляет службы файловой системы, такие как файлы документов, фотографий, музыки и видео. Веб-сервер предоставляет услуги веб-содержимого.На сервере хранения размещаются службы хранения с различными уровнями обслуживания, например платиновый, золотой, серебряный, бронзовый, службы резервного копирования и архивного хранения. Сервер приложений поддерживает службы приложений, такие как офисные приложения или электронная почта. Кроме того, сервер также может действовать как программный механизм, который управляет общими ресурсами, такими как базы данных, принтеры, сетевое соединение или даже ЦП. Основная функция сервера — выполнять внутренние задачи (см. Рисунок 11.6).
Рисунок 11.6. Отношения клиент / сервер.
Среди этих различных типов серверов самым простым сервером является сервер хранения. С файловым сервером, таким как FTP (протокол передачи файлов) или SMB / CIFS (серверный блок сообщений / общая файловая система Интернета) или сервер NFS (сетевая файловая система, Sun), клиент может запросить файл или файлы через Интернет. или LAN. Это зависит от размера файла. Если размер очень большой, запрос клиента требует большой пропускной способности сети. Это снизит скорость сети. Серверы баз данных, транзакций и приложений более сложны.
С 1980-х годов количество хостинговых серверов растет в геометрической прогрессии (см. Рисунок 11.7). Когда в январе 1993 года ISC приступила к обследованию количества хостов, количество хостов составляло всего 1 313 000; однако в июле 2013 года количество хостов достигло 996 230 757 человек. Он увеличился почти в 760 раз, но средняя загрузка сервера хостинга намного ниже. Согласно отчету Gartner, опубликованному в ноябре 2008 г., средний коэффициент использования серверов x86 для большинства организаций составлял всего от 7% до 15% [185].Наш опыт показывает, что для некоторых серверов мобильного контента коэффициент использования даже ниже 1%. Это привело к консолидации серверов за счет значительных улучшений технологии виртуализации. По сути, Интернет-технологии и услуги вызвали ускорение роста хост-серверов, а рост объема серверов вызвал виртуализацию серверов, которая закладывает базовую инфраструктурную основу для облака.
Рисунок 11.7. Хосты интернет-домена [184].
Теперь, когда мы прояснили концепции клиентской, серверной и клиент-серверной архитектуры, в следующих разделах мы подробно рассмотрим серверы x86 и RISC.
Инструменты QA — Что такое архитектура клиент-сервер и протокол HTTP?
Это первая глава серии REST API Testing with Rest-Assured series. Прежде чем переходить к коду, необходимо понять Основы клиент-серверной архитектуры и протокола HTTP.
Клиент-серверная архитектура
Чтобы понять архитектуру клиент-сервер, давайте рассмотрим небольшой пример. Допустим, нам нужно получить данные о погоде для моего города сегодня.Для этого мне нужно будет спросить кого-нибудь, кто знает о погодных условиях в моем городе. Предполагая, что компьютеры еще недоступны, мы обычно просматриваем дневную газету или можем слушать радио.
В этом процессе есть два разных участника. Первый — это вы, кому нужна информация о погоде. Второй — радио или газета, которые предоставляют информацию. Если назвать этих двух участников, мы получим
- Потребитель, желающий получить определенную информацию.Также называется клиентом в контексте клиент-сервер.
- Провайдер, предоставляющий информацию. Также называется сервером в контексте клиент-сервер.
В эпоху компьютеров клиент и сервер — это два компьютера, разделенных расстоянием между ними, но соединенных сетью ( Интернет, ). Однако здесь важно отметить, что необязательно, чтобы клиент и сервер находились на расстоянии нескольких миль друг от друга, возможно, что программы клиента и сервера выполняются как два процесса на одном компьютере.
Для понимания архитектуры клиент-сервер мы предположим, что клиент и сервер разделены, расположены в разных географических регионах и связаны через Интернет. Давайте попробуем изобразить это на небольшой диаграмме:
Протокол HTTP между клиентом и сервером
Обсуждая приведенный выше пример, мы читаем газету или слушаем радио, чтобы узнать прогноз погоды. Газеты и радио используют ваш местный язык, и вы сможете понять, что написано в газете или говорится по радио.Однако для клиентов и серверов в Интернете мы должны придумать две вещи
- Среда для связи, в частности протокол для взаимодействия двух систем. Также называется протоколом связи HTTP
- Протокол для запроса необходимых данных с сервера. Это могут быть отформатированные данные в любой форме. Чаще всего используются форматы XML и Json.
- Сервер отвечает, отправляя ответ в любой форме отформатированных данных, здесь также может быть XML или JSON.
Подводя итог: Клиент и сервер устанавливают соединение с использованием протокола HTTP. Как только соединение установлено, Клиент отправляет запрос на Сервер в форме XML или JSON, которые понимают оба объекта (Клиент и Сервер ). После понимания запроса Сервер отвечает соответствующими данными, отправляя ответ.
Чтобы лучше понять это обсуждение, давайте более подробно остановимся на примере сведений о погоде, о которых мы говорили ранее.Если мы хотим узнать подробности погоды для места, мы должны указать имя места для сервера, чтобы сообщить нам подробности о погоде для этого места.
Когда вы Request для получения сведений о погоде, вы указываете название места в Request.
В свою очередь, сервер отправляет ответ обратно. Этот ответ содержит фактическую температуру в городе.
Вот небольшая пошаговая диаграмма, иллюстрирующая этот процесс.
Упомянутые здесь запрос и ответ — это HTTP-запрос и HTTP-ответ. В следующем разделе мы подробнее поговорим о HTTP-запросе и HTTP-ответе .
Основы проектирования системы
: архитектура клиент-сервер. | Автор: Ашис Чакраборти
Архитектура клиент-сервер
Архитектура клиент / сервер — важная концепция для новичков в проектировании систем. Вы можете подумать, что это основа того, как работает современный Интернет.В наши дни цифровые устройства, такие как компьютеры, ноутбуки, мобильные устройства, есть повсюду. Архитектура клиент-сервер — это основа понимания того, как эти компьютеры взаимодействуют друг с другом.
Что означают клиент и сервер в модели клиент-сервер? Для упрощения мы можем сказать, что клиент — это машина, которая запрашивает некоторые данные или услугу. И сервер возвращает клиенту какую-то услугу или данные. Серверы слушают входящие сетевые запросы. Итак, модель клиент-сервер — это современная система, спроектированная таким образом, что клиенты запрашивают данные или услугу с сервера, а серверы предоставляют данные или услугу клиенту.Согласно вики, модель
Клиент-сервер представляет собой распределенную структуру приложения, которая разделяет задачи или рабочие нагрузки между поставщиками ресурса или службы, называемыми серверами, и инициаторами запросов на обслуживание, называемыми клиентами.
В этой архитектуре все запросы и услуги доставляются по сети. Он рассматривается как тип распределенной вычислительной системы, поскольку компоненты выполняют свою работу независимо.
Рисунок: Модель клиент-сервер (Изображение автора)
Теперь мы можем проверить, как эта архитектура работает на примере.Например, что происходит, когда мы набираем www.medium.com в нашем браузере и нажимаем кнопку ввода. Клиентское устройство, наш собственный ноутбук или компьютер, на самом деле не знает, что означает URL-адрес medium.com. Браузеру необходимо связаться с сервером, на котором находится средний URL.
Пользователи, которые вводят определенный URL-адрес в этой системе, являются клиентами. Сервер предоставляет информацию через Интернет. Итак, эти компьютеры могут находиться в разных частях света.
Для взаимодействия двух систем необходим определенный набор правил.Самыми популярными являются HTTP и HTTPS.
Клиентские компьютеры запрашивают у сервера необходимую информацию. Это может быть любая структура форматированных данных. В основном реализованные и популярные форматы — это XML и JSON. Сервер и клиент запрашивают и отвечают в основном с использованием этих форматов.
Теперь мы подробно рассмотрим, что происходит после того, как пользователь вводит URL-адрес в браузере. Как браузер узнает, где находится сервер? Браузер выполняет DNS-запрос.
DNS-запрос:
DNS означает систему доменных имен . Преобразует удобочитаемое имя домена в машиночитаемый IP-адрес. Скажем, например, мы можем использовать medium.com в качестве названия веб-сайта. Но машины не понимают этого имени. Компьютеры понимают IP-адреса, по которым они находят друг друга. Например, IP-адрес может быть 192.0 10. 101. Только представьте, сколько веб-сайтов мы посещаем каждый день. И если бы нам пришлось запоминать эти типы IP-адресов вместо таких имен, как Facebook, Google, Medium и т. Д., Было бы невозможно использовать Интернет.
Рисунок: Пример DNS-запроса браузером (Изображение Автор)
Проще говоря, клиентский браузер запрашивает у DNS IP-адрес сервера. И DNS предоставляет это браузеру.
IP-адрес: Можно сказать, что IP-адрес — это уникальный идентификатор цифрового устройства. Это адрес цифровой машины, подключенной к общедоступному Интернету. Итак, все цифровые машины имеют публичный IP-адрес. Данные от клиента достигают сервера по этому адресу. Мы можем думать об этом как о почтовом ящике для людей.
Теперь после запроса DNS браузер клиента получает IP-адрес сервера. И клиент отправляет запросы на IP сервера. Сервер отправляет ответ на этот запрос клиенту.
Сервер прослушивает запросы на определенных портах. Каждая машина с IP-адресом имеет более или менее 65 КБ (²) портов, которые она прослушивает. Итак, для связи между машинами нужен не только IP-адрес, но и порт, через который мы хотим общаться. Итак, как клиенты, мы должны указать номер порта вместе с IP-адресом для связи с сервером.
IP-адрес подобен почтовому ящику многоквартирного дома. А порты похожи на фактический номер квартиры в доме. Если клиент использует протокол HTTP для связи с сервером, номер порта всегда 80. Для HTTPS номер порта — 443.
Теперь, как два сервера машины и клиенты взаимодействуют?
Сетевой протокол:
Скажем для людей, если один говорит по-английски, а другой по-испански, им будет трудно понимать друг друга.То же самое и с компьютерами; если у компьютеров нет общего набора правил, как они могут общаться?
Сетевой протокол — это установленное правило, которое сервер и клиент соглашаются соблюдать во время связи. Серверы и клиенты взаимодействуют друг с другом, используя правила, которые называются протоколами.
Сетевые протоколы состоят из различных типов сообщений, которые отправляются и принимаются сервером и клиентскими машинами. Эти сообщения отправляются по сети, через Интернет. Структура, формат и порядок этих сообщений создают сетевой протокол.
В информатике много протоколов. Нам нужно знать только о популярных сетевых протоколах. Первое, что мы собираемся обсудить, — это IP, что означает Интернет-протокол.
IP-протокол:
Интернет-протокол (IP) — это набор правил для адресации пакетов данных, чтобы они могли перемещаться по сети и приземляться на правильном конечном компьютере. Данные, проходящие через Интернет, делятся на более мелкие блоки, называемые пакетами. Эта IP-информация, прикрепленная к каждому пакету, помогает сетевым маршрутизаторам отправлять пакеты в нужное место.
Текущая интернет-система работает по интернет-протоколу. Сервер и клиент обмениваются данными и обмениваются данными друг с другом, используя форму пакетной системы, называемой IP-пакетом. Этот IP-пакет используется для передачи данных между машинами.
Он состоит из двух частей: IP-заголовка и данных . Заголовок содержит информацию о пакете. Он содержит исходный IP-адрес, откуда отправляются данные, целевой IP-адрес и куда они отправляются.Итак, теперь мы можем понять, что источник и место назначения машин прикреплены в IP-пакете. Это основная идея того, как данные передаются через Интернет.
Рисунок: Передача IP-пакетов (Изображение автора)
Общий размер пакета также добавляется в заголовок. А также есть версии. Версии IP IPv4 и IPv6 — две хорошо известные версии IP. В зависимости от версии формат пакета может измениться. Поскольку это хорошо известные правила, все компьютеры умеют их интерпретировать.Остальная часть пакета — это данные. Размер IP-пакета невелик. В основном это ²¹⁶ байта (65000 байтов), что на самом деле составляет 0,065 мегабайта. Итак, мы видим, что он довольно маленький по размеру.
Мы передаем намного больший объем данных. Итак, один IP-пакет не может содержать все данные, которые мы хотим передать. В IP-пакетах нет порядка, в котором мы можем сериализовать блоки данных. И некоторые данные могут быть потеряны по сети. В этом случае исходные данные восстановить невозможно.
TCP:
TCP означает протокол управления передачей.Он построен на основе интернет-протокола. Он поддерживает упорядоченный способ отправки IP-пакетов. Передача TCP более надежна. Это дает нам возможность определить, не потерян ли какой-либо пакет.
Если вы знаете, что некоторые пакеты повреждены при передаче по сети, вы можете повторно отправить эти пакеты. Это позволяет нам отправлять данные большого размера на другие машины.
IP-пакет содержит часть данных. В этой части будет заголовок TCP. Этот заголовок содержит информацию о TCP-пакете данных, например о порядке пакетов.
Фотография Sincerely Media на Unsplash
Первое общение с использованием TCP-соединения — это рукопожатие между сервером и клиентами. Рукопожатие — это взаимодействие между двумя машинами, при котором исходная машина отправляет пакеты конечной машине, говоря: «Я хочу связаться с вами». Когда другой компьютер отвечает, говоря: «Хорошо. Мы умеем подключаться и общаться ».
Теперь исходная машина отправляет пакеты со словами: «Теперь мы подключены». Тогда у нас есть открытое TCP-соединение. Теперь, когда соединение установлено, оба компьютера могут отправлять данные друг другу.
Есть ограничение по времени подключения; если машина не отправляет данные в течение этого периода времени, это соединение будет отключено по тайм-ауту.
При разрыве TCP-соединения любая из двух машин может отправить специальное сообщение: «Я завершаю соединение». TCP похож на оболочку IP, и он более мощный, чем IP.
Но TCP не хватает инфраструктуры, позволяющей разработчикам программного обеспечения легко использовать канал связи клиент-сервер в системе.
HTTP:
Протокол передачи гипертекста, который построен на TCP.Он обеспечивает абстракцию более высокого уровня над TCP и IP. Его основная характеристика — последовательность запрос-ответ. Одна машина отправляет запрос, а другая машина должна вернуть ответ. Большинство современных систем используют протокол HTTP для связи.
Нам не нужно знать о пакетах TCP и IP при использовании HTTP. Он заботится о разработчиках этих сложных низкоуровневых машинных вещей. Put, Get, Post, Delete — это несколько основных методов HTTP. HTTP дает нам возможность добавить бизнес-логику, а не просто передачу данных.
Итак, ввод medium.com и нажатие Enter отправляет запрос домашней страницы Medium. И средний сервер отправляет обратно HTML-код домашней страницы. Теперь клиентский браузер получает HTML и отображает страницу для клиентского устройства.
Заключение:
В архитектуре клиент-сервер все службы и запросы распределяются по сети. Компоненты системы, такие как серверы и клиенты, выполняют задачи независимо друг от друга. Это простая, но фундаментальная концепция.Архитектура клиент-сервер — это то, как все компьютеры взаимодействуют друг с другом. HTTP — наиболее распространенный протокол для связи сервер-клиент. Его основная характеристика — последовательность запрос-ответ. Клиент делает запрос, а сервер предоставляет ответ. Как системный разработчик, вы должны решить, какой запрос нужно делать и когда. И какой ответ должен предоставить сервер.
Ссылка для ссылки
Архитектура клиент-сервер. Клиент-серверная архитектура — это… | по Коби
1.Что такое архитектура клиента и сервера
2. Что такое масштабирование (горизонтальное масштабирование, вертикальное масштабирование)
3. Плюсы и минусы
4. Перенести архитектуру клиент-сервер в облако.
Архитектура клиент / сервер — это вычислительная архитектура производитель / потребитель, в которой сервер действует как производитель, а клиент как потребитель. На сервере размещаются и по запросу предоставляются высокопроизводительные вычислительные услуги. Эти услуги могут включать доступ к приложениям, хранилище, совместное использование файлов, доступ к принтеру и / или прямой доступ к исходной вычислительной мощности сервера.
Архитектура клиент / сервер работает, когда клиентский компьютер отправляет запрос ресурса или процесса на сервер по сетевому соединению, который затем обрабатывается и доставляется клиенту. Серверный компьютер может управлять несколькими клиентами одновременно, тогда как один клиент может быть подключен к нескольким серверам одновременно, каждый из которых предоставляет свой набор услуг. В своей простейшей форме Интернет также основан на архитектуре клиент / сервер, где веб-серверы обслуживают множество одновременных пользователей с данными веб-сайта.
Из Techopedia
Схема архитектуры клиента и сервера v0.1
- Архитектура клиент-сервер — это полезное приложение, которое разделяет клиент и сервер на две части. Это помогает нашей системе иметь высокую функциональную совместимость.
В 2000-х
В 2000-х наш сервер должен обрабатывать все, от пользовательского интерфейса / бизнес-логики / хранилища.
Сегодня
Теперь мы разделяем пользовательский интерфейс и бизнес-логику на 2 части — клиент содержит логический процесс для пользовательского интерфейса и дескриптор сервера для бизнес-логики.
Эта архитектура помогает нам улучшить производительность в плане масштабируемости, и этот шаблон также помогает нам легко разделить функциональность на другую часть, а с архитектурой клиент-сервер мы можем сделать это с наиболее применимыми.
Итак, вернемся к нашей истории… система хорошо работает с годами. Однажды систему используют большое количество пользователей, и система не может обрабатывать большие объемы данных.
Примечание: Greenstone ~ 1 миллион пользователей. (づ 。◕‿‿◕。) づ
До После
Масштабируемость — это свойство системы справляться с растущим объемом работы за счет добавления ресурсов в систему.
Из Wiki
У нас есть 2 вида масштабируемости: горизонтальное масштабирование и вертикальное масштабирование .
Горизонтальное масштабирование означает, что вы масштабируете, добавляя больше машин в пул ресурсов, тогда как вертикальное масштабирование означает, что вы масштабируете, добавляя больше мощности (ЦП, ОЗУ, жесткий диск) к существующей машине.
Вертикальное масштабирование
Итак, теперь у нашего сервера есть много запросов, которые нужно обработать, и мы должны иметь дело с проблемами «Недостаточно памяти или заполнен диск», и вертикальное масштабирование сейчас хорошо.
Теперь мы можем обрабатывать количество запросов от 100 до 10 тысяч пользователей.
Что происходит, когда у нас более 100 000, 1 миллион, даже до 10 миллионов пользователей используют приложения. (Dev в 2000-е годы)
Разработчик : Beep beep Boss наш сервер имеет только один свободный слот RAM. теперь мы обслуживаем только около 10 тыс. пользователей, нам нужно больше оперативной памяти для обработки 1 млн. пользователей.
Boss : Сделайте заказ компании «Corsair Company» на изготовление RAM (~ 160 ГБ) для нашей компании сейчас
Corsair Company :… Цена около $ x миллион и день доставки: 01.01. 2030 ¯ \ _ (ツ) _ / ¯
Разработчик: Босс, позвольте мне попробовать другое решение, сейчас нам нужно несколько серверов.
Примечание. Максимальное количество оперативной памяти на ПК в этой статье составляет 2
Горизонтальное масштабирование
Текущая система обслуживает только около 100 тыс. Пользователей. Нам нужно больше серверов, чем один, поскольку этим летом появится много пользователей.
При горизонтальном масштабировании у нас есть два способа работы с этим элементом.
- Во-первых, нам не нужно заботиться о бизнесе нашей системы. Купим новую машину и воспользуемся ею.
Итак, наша диаграмма будет обновлена, как показано ниже. Схема архитектуры клиента и сервера v0.2
В этой архитектуре нам нужно разбить приложение на два типа служб.
- Основная служба (основная служба): обработка маршрутизатора и веб-хоста, логика управления, конфигурация и т. Д.
- Бизнес-служба (служба приложений): обработка бизнес-логики для приложения (пример.Статистика и отчет, обрабатывают большой процесс подачи заявки)
2. Второй способ — выяснить, что не так с нашей системой. Где ведет к гибели системы?
Пример: в нашей системе есть 10 бизнес-логик, однако только один бизнес 2/10 не позволяет системе работать с большим количеством пользователей. Мы можем разбить 2 бизнес-логики на новые машины.
Итак, наша диаграмма будет обновлена, как показано ниже. Схема архитектуры клиента и сервера v0.3
В этой архитектуре нам нужно разбить приложение на несколько частей (службы)
Пример: наше приложение имеет 2 функции (Отчет и Бизнес ****) всегда работают с высокой нагрузкой (потребляют больше памяти, потоков, жесткого диска…), мы передадим эту функциональность другой службе.
Основная служба (основная служба): обрабатывает все функции нашей системы, и пользователю необходимо сообщить, что основная служба вызовет обработку службы статистики и анализа. Когда это будет сделано, основная служба только получила данные и отправила обратно клиенту.
Разработчик: Босс у нас все получается. ̿̿ ̿̿ ̿̿ ̿’̿ ’\ ̵͇̿̿ \ з = (▀ ͜͞ʖ▀) = ε / ̵͇̿̿ /’ ̿’̿ ̿̿ ̿̿ ̿̿. Я приношу в свою команду сейчас, и они самые сильные в мире. Теперь мы справимся со всем, босс.
- Гибкость: клиентская и серверная архитектура чрезвычайно гибкая и может обрабатывать различные типы клиентов.Один и тот же сервер может обслуживать большое количество клиентов. Так что это гибкий вариант.
- Масштабируемость: мы можем обрабатывать возросшую мощность нашей системы от клиента к серверу отдельно, а также легко масштабировать наше приложение.
- Правильное управление: все данные и хранилище в одном месте. Очень мощный инструмент с функцией резервного копирования / восстановления / миграции.
- Простое обслуживание: Архитектура клиента и сервера — это распределенная модель, мы можем легко заменить, отремонтировать или обновить сервер, не беспокоясь о том, что клиент останется неизменным.
Недостатки клиент-серверной архитектуры:
- Перегруженный сервер: при частых одновременных запросах клиентов. Наш сервер сильно перегружается, формируются транспортные соединения.
Решение: нам нужно добавить базу данных кэша (вероятно, Redis Cache и сервер могут уменьшить перегрузку для некоторых сценариев)
- Плохая обработка ошибки и потерянные данные, потому что, поскольку она централизована, если критический сервер отказал, клиент запросы не выполняются, данные теряются, и простоя невозможно избежать.Следовательно, клиент-сервер не обладает надежностью хорошей сети.
- Очень дорого в установке и управлении сетью
○ Серверные машины намного мощнее стандартных клиентских машин, а это значит, что они дороже
○ Требуется наем сотрудников со знанием сетей и инфраструктуры для управления система
Вернуться к нашей истории Через месяц после окончания Олимпийских игр и монтирования пользователей с помощью нашей системы снизилось около 1000 пользователей.
Итак, теперь у моей команды, похоже, не так много работы, и начальник жаловался на меня по поводу затрат, использованных для разработки системы, и теперь, похоже, в настоящее время это не имеет значения. (Мы считаем, что покупать все бесплатные серверы в настоящее время не нужно) продажи 20% ಥ_ಥ.
Как решить все проблемы, указанные выше?
Перенос приложения в облако (AWS)
В этой архитектуре мы используем Route53 / ELB для распределения рабочей нагрузки между регионами AWS.
CloudFront помогает масштабировать и распределять статический контент через корзину S3, сохраняя состояние вашего приложения, так что Auto Scaling может применять горизонтальное масштабирование без потери данных сеанса.
Мы автоматически масштабируем минимальный 1 экземпляр и максимум 3 экземпляра веб-службы и службы приложений, а также автоматическое масштабирование экземпляров в зависимости от конфигурации (ЦП, память …).
Используйте службу DNS Amazon Route53 и эластичную балансировку нагрузки для маршрутизации трафика между -помещения и облачные среды, которые помогут вам быстро масштабировать облачную среду, когда это необходимо, и еще больше уменьшить ее, применив автоматическое масштабирование Amazon и установив пороговое значение для вашего трафика с помощью Route 53.
Ссылки
https://cs.uwaterloo.ca/~m2nagapp/courses/CS446/1195/Arch_Design_Activity/ClientServer.pdf
https://docs.aws.amazon.com/whitepapers/latest/ microservices-on-aws / user-interface.html
https : //sites.google.com/site/clientserverarchitecture/advantages-of-client-server-architecture
https: // www.leadedgetech.co.uk/it-services/it-consultancy-services/cloud-computing/how-is-cloud-computing-different-from-traditional-it-infrastructure/#:~:text=The%20information%20and% 20 приложений% 20 размещенных, ресурсы% 2C% 20включая% 20better% 20компьютерные% 20мощность.
https://creately.com/diagram/example/ixj8h49o1/Client%20Server%20Architecture
https://www.conceptdraw.com/examples/amazon-client-server-architecture
Архитектура клиент-сервер. Эта статья связана с моей предыдущей… | Эла Сингх | CodeX | Август, 2021 г.
Модель «клиент-сервер» — это распределенная структура приложения, которая распределяет задачи или рабочие нагрузки между поставщиками ресурса или службы, называемыми серверами, и инициаторами запросов служб, называемыми клиентами.Приложения, использующие архитектуру клиент-сервер, — это электронная почта, сетевая печать, World Wide Web и многие другие.
Модель «клиент-сервер»
Сервер — это место, где происходит вся необходимая обработка, а на клиенте пользователь может получить доступ к службам, предоставляемым сервером. В большинстве случаев на удаленной стороне находится только один сервер, но для обеспечения безопасности и эффективности мы используем несколько серверов, которые используют методы балансировки нагрузки.
Балансировка нагрузки очень важна для проектирования надежной архитектуры.Это помогает в распределении сетевого трафика между несколькими серверами, чтобы улучшить скорость отклика приложений и избежать сплоченности трафика. Мы обсудим больше об алгоритмах и методах балансировки нагрузки в следующих публикациях.
Теперь, чтобы понять взаимодействие между клиентом и сервером, нам необходимо правильно понять приведенную ниже терминологию:
- Запросы : Запросы отправляются от клиента, чтобы запросить у сервера некоторые данные, такие как файлы, или информировать сервер о происходящих действиях, например о том, что пользователь хочет войти в систему со своими учетными данными.
- Ответ : ответ отправляется с сервера клиенту и является реакцией сервера на запрос клиента. Например, результат аутентификации.
- Служба : Служба — это особая задача, которую сервер предоставляет для использования клиентом, например загрузка изображения
Более того, на одном компьютере можно одновременно запускать веб-сервер и программное обеспечение файлового сервера для обслуживания различных данных. разным клиентам, делающим разные запросы.
Связь между клиентом и сервером
Клиенты и серверы обмениваются сообщениями в шаблоне обмена сообщениями типа запрос-ответ. Клиент отправляет запрос, а сервер возвращает ответ на полученный запрос. Этот обмен сообщениями — классический пример межпроцессного взаимодействия. Серверный компонент постоянно прослушивает запросы от клиентских компонентов. Когда запрос получен, сервер обрабатывает этот запрос, а затем отправляет ответ обратно клиенту. Серверы могут быть дополнительно классифицированы как сервер без отслеживания состояния или сервер с отслеживанием состояния.
- Сервер с отслеживанием состояния запоминает данные (состояние) клиента от одного запроса к другому. Эти серверы хранят состояние сеанса. Более того, они отслеживают, какие файлы открыли клиенты, текущие указатели чтения и записи на файлы, какие файлы были заблокированы какими клиентами и т. Д.
- Сервер без сохранения состояния не хранит информацию о состоянии. Эти серверы не хранят состояние сеанса. Это означает, что каждый клиентский запрос обрабатывается независимо и не является частью нового или существующего сеанса.
Для одновременной обработки запросов от нескольких клиентов сервер часто использует шаблон Master-Slave. В этом случае Мастер постоянно слушает запросы клиентов. Когда запрос получен, ведущее устройство создает ведомое устройство для обработки этого запроса, а затем снова возобновляет прослушивание. В то же время ведомое устройство осуществляет всю последующую связь с клиентом.
Приведенная ниже диаграмма последовательности четко объясняет типичное взаимодействие клиент-сервер:
Как браузер обычно взаимодействует с серверами?
- Пользователь вводит URL-адрес (унифицированный указатель ресурсов) веб-сайта или файла.Затем браузер запрашивает сервер DNS (система доменных имен).
- DNS-сервер ищет адрес веб-сервера.
- DNS-сервер отвечает IP-адресом веб-сервера.
- Браузер отправляет запрос HTTP / HTTPS на IP-адрес веб-сервера (предоставляется DNS-сервером).
- Сервер отправляет необходимые файлы сайта.
- Браузер затем отображает файлы, и отображается веб-сайт. Этот рендеринг выполняется с помощью интерпретатора DOM (объектной модели документа), интерпретатора CSS и JS Engine, вместе известных как JIT или (Just in Time) компиляторы.
Преимущества модели клиент-сервер
- Централизация — Основным преимуществом сети клиент-сервер является централизованное управление. Вся необходимая информация размещена в одном месте. Это особенно полезно для сетевого администратора, поскольку он имеет полный контроль над управлением и администрированием. Какую бы проблему ни возникало во всей сети, ее можно решить в одном месте. Также благодаря этому работа по обновлению ресурсов и данных стала легкой.
- Безопасность — в сети клиент-сервер данные хорошо защищены благодаря централизованной архитектуре. Это может быть реализовано с помощью элементов управления доступом, при которых доступ предоставляется только авторизованным пользователям. Один из таких методов — введение учетных данных, таких как имя пользователя и пароль. Кроме того, в случае потери данных файлы можно легко восстановить из одной резервной копии.
- Масштабируемость — сети клиент-сервер обладают высокой масштабируемостью. При необходимости пользователи могут увеличить количество ресурсов, таких как клиенты и серверы.Таким образом, увеличивая размер сервера без особых перерывов. Даже если размер будет увеличен, можно не сомневаться в разрешении доступа к сетевым ресурсам, поскольку сервер централизован. Следовательно, для конфигураций требуется очень меньшее количество сотрудников.
- Управление — Поскольку все файлы хранятся на центральном сервере, управлять файлами легко. Сеть клиент-сервер может легко отслеживать и находить записи о необходимых файлах.
- Доступность — Независимо от местоположения или платформы, каждому клиенту предоставляется возможность войти в систему.Таким образом, все пользователи смогут получить доступ к своей корпоративной информации без использования терминального режима или процессора.
Недостатки модели клиент-сервер
- Перегрузка трафика — основным недостатком сети клиент-сервер является перегрузка трафика. Если слишком много клиентов отправят запрос с одного и того же сервера, это приведет к сбоям или замедлению соединения. Перегруженный сервер может создать множество проблем при доступе к информации.
- Надежность — как мы уже знаем, сети клиент-сервер централизованы.В случае, если основной сервер выйдет из строя или возникнет вмешательство, вся сеть будет нарушена. Поэтому сетям клиент-сервер не хватает надежности.
- Стоимость — Иногда установка и обслуживание сервера в сети клиент-сервер обходятся дорого. Поскольку сети мощные, их покупка может быть дорогостоящей. Следовательно, не все пользователи смогут их себе позволить.
- Техническое обслуживание — когда серверы внедрены, они обычно работают без остановки. Это означает, что каждому серверу необходимо уделять должное внимание.Если есть какие-то проблемы, их нужно решать немедленно, без промедления. Следовательно, для обслуживания сервера должен быть назначен специализированный сетевой менеджер.
Архитектура клиент-сервер
Модель клиент-сервер вычислений — это распределенная структура приложения, которая разделяет задачи или рабочие нагрузки между поставщиками ресурса или услуги, называемыми серверами, и инициаторами запросов на услуги, называемыми клиентами. Часто клиенты и серверы обмениваются данными по компьютерной сети на отдельном оборудовании, но и клиент, и сервер могут находиться в одной системе.Хост сервера запускает одну или несколько серверных программ, которые делятся своими ресурсами с клиентами. Клиент не делится своими ресурсами, но запрашивает контент или сервисную функцию сервера. Таким образом, клиенты инициируют сеансы связи с серверами, ожидающими входящих запросов.
Примерами компьютерных приложений, использующих модель клиент-сервер, являются электронная почта, сетевая печать и World Wide Web.
Роль клиента и сервера
Характеристика клиент-сервер описывает отношения взаимодействующих программ в приложении.Серверный компонент предоставляет функцию или услугу одному или нескольким клиентам, которые инициируют запросы на такие услуги.
Серверы классифицируются по предоставляемым ими услугам. Например, веб-сервер обслуживает веб-страницы, а файловый сервер обслуживает компьютерные файлы. Общий ресурс может быть любым программным обеспечением и электронными компонентами серверного компьютера, от программ и данных до процессоров и запоминающих устройств. Совместное использование ресурсов сервера составляет , сервис .
Является ли компьютер клиентом, сервером или и тем, и другим, определяется характером приложения, которому требуются сервисные функции.Например, на одном компьютере можно одновременно запускать веб-сервер и программное обеспечение файлового сервера, чтобы обслуживать разные данные для клиентов, отправляющих разные типы запросов. Клиентское программное обеспечение также может взаимодействовать с серверным программным обеспечением на том же компьютере. Связь между серверами, например, для синхронизации данных, иногда называется межсерверная или межсерверная связь
Связь между клиентом и сервером
В общем, служба — это абстракция компьютерных ресурсов, и клиенту не нужно беспокоиться о том, как сервер работает при выполнении запроса и доставке ответа.Клиент должен понимать только ответ, основанный на известном протоколе приложения, то есть содержание и форматирование данных для запрашиваемой услуги.
Клиенты и серверы обмениваются сообщениями в шаблоне обмена сообщениями запрос – ответ: клиент отправляет запрос, а сервер возвращает ответ. Этот обмен сообщениями является примером межпроцессного взаимодействия. Для взаимодействия компьютеры должны иметь общий язык, и они должны следовать правилам, чтобы и клиент, и сервер знали, чего ожидать.Язык и правила общения определены в протоколе связи. Все протоколы клиент-сервер работают на уровне приложений. Протокол прикладного уровня определяет основные шаблоны диалога. Чтобы еще больше формализовать обмен данными, сервер может реализовать API (например, веб-службу). API — это уровень абстракции для таких ресурсов, как базы данных и специализированное программное обеспечение. Ограничивая связь определенным форматом контента, он упрощает синтаксический анализ. Абстрагируя доступ, он упрощает межплатформенный обмен данными.
Сервер может получать запросы от множества разных клиентов за очень короткий период времени. Поскольку компьютер может выполнять ограниченное количество задач в любой момент, он полагается на систему планирования для определения приоритетов входящих запросов от клиентов, чтобы удовлетворить их все по очереди. Чтобы предотвратить злоупотребления и увеличить время безотказной работы, программное обеспечение сервера ограничивает то, как клиент может использовать ресурсы сервера. Даже в этом случае сервер не застрахован от злоупотреблений. Атака отказа в обслуживании использует обязанность сервера обрабатывать запросы, непрерывно забрасывая его запросами.Это препятствует возможности сервера отвечать на законные запросы.
Пример
Когда клиент банка получает доступ к услугам онлайн-банкинга с помощью веб-браузера (клиента), клиент инициирует запрос к веб-серверу банка. Учетные данные клиента могут храниться в базе данных, и веб-сервер обращается к серверу базы данных как клиент. Сервер приложений интерпретирует возвращенные данные, применяя бизнес-логику банка, и предоставляет вывод на веб-сервер.Наконец, веб-сервер возвращает результат клиентскому веб-браузеру для отображения.
На каждом этапе этой последовательности обмена сообщениями клиент-сервер компьютер обрабатывает запрос и возвращает данные. Это шаблон обмена сообщениями запрос-ответ. Когда все запросы удовлетворены, последовательность завершается, и веб-браузер представляет данные клиенту.
Этот пример иллюстрирует шаблон проектирования, применимый к модели клиент-сервер: разделение задач.
Ранняя история
При формулировании модели клиент-сервер в 1960-х и 1970-х годах компьютерные специалисты из Xerox и Xerox PARC использовали термины сервер-хост (или , обслуживающий хост ) и пользователь-хост (или с использованием-хоста ). .
Одним из контекстов, в котором исследователи использовали эти термины, была разработка языка программирования компьютерных сетей, называемого языком декодирования-кодирования (DEL). Цель этого языка состояла в том, чтобы принимать команды от одного компьютера (пользователь-хост), который возвращал бы отчеты о состоянии пользователю, поскольку он закодировал команды в сетевых пакетах. Другой компьютер с поддержкой DEL, сервер-хост, получил пакеты, декодировал их и вернул отформатированные данные на хост-пользователя. Программа DEL на пользовательском хосте получила результаты для представления пользователю.Это транзакция клиент-сервер. Разработка DEL только началась в 1969 году, когда Министерство обороны США создало ARPANET (предшественник Интернета).
Клиент-хост и сервер-хост
Клиент-хост и сервер-хост имеют несколько иное значение, чем клиент и сервер . Хост — это любой компьютер, подключенный к сети. В то время как слова сервер и клиент могут относиться либо к компьютеру, либо к компьютерной программе, сервер-хост и пользователь-хост всегда относятся к компьютерам.Хост — это универсальный многофункциональный компьютер; клиенты и серверы — это просто программы, которые выполняются на хосте. В модели клиент-сервер сервер, скорее всего, будет посвящен задаче обслуживания.
Слово клиент впервые используется в статье 1978 года компьютерных ученых Xerox PARC Говарда Стерджиса, Джеймса Митчелла и Джея Исраэля «Отделение данных от функции в распределенной файловой системе». Авторы тщательно определяют термин для читателей и объясняют, что они используют его, чтобы различать пользователя и сетевой узел пользователя (клиент).(К 1992 году слово сервер вошло в общий язык.)
Централизованные вычисления
Дополнительная информация: История персональных компьютеров, децентрализованных вычислений и компьютерного кластера
Модель клиент-сервер не требует, чтобы у хостов-серверов было больше ресурсов, чем у хостов-клиентов. Скорее, он позволяет любому универсальному компьютеру расширять свои возможности за счет использования общих ресурсов других хостов. Однако при централизованных вычислениях большое количество ресурсов выделяется небольшому количеству компьютеров.Чем больше вычислений выгружается с клиентских хостов на центральные компьютеры, тем проще могут быть клиентские хосты. Он сильно зависит от сетевых ресурсов (серверов и инфраструктуры) для вычислений и хранения. Бездисковый узел загружает из сети даже свою операционную систему, а компьютерный терминал вообще не имеет операционной системы; это только интерфейс ввода / вывода для сервера. Напротив, толстый клиент, такой как персональный компьютер, имеет много ресурсов и не полагается на сервер для выполнения основных функций.
По мере того, как с 1980-х до конца 1990-х годов микрокомпьютеры падали в цене и становились все более мощными, многие организации перевели вычисления с централизованных серверов, таких как мэйнфреймы и миникомпьютеры, на толстых клиентов. Это давало более индивидуализированное господство над компьютерными ресурсами, но усложняло управление информационными технологиями. В течение 2000-х годов веб-приложения стали достаточно зрелыми, чтобы конкурировать с прикладным программным обеспечением, разработанным для конкретной микроархитектуры. Это развитие, более доступное запоминающее устройство и появление сервис-ориентированной архитектуры были одними из факторов, которые привели к появлению в 2010-х годах тенденции облачных вычислений.
Сравнение с одноранговой архитектурой
В дополнение к модели клиент-сервер, распределенные вычислительные приложения часто используют архитектуру одноранговых приложений (P2P).
В модели клиент-сервер сервер часто проектируется как централизованная система, обслуживающая множество клиентов. Требования к вычислительной мощности, памяти и хранилищу сервера должны быть соответствующим образом масштабированы в соответствии с ожидаемой рабочей нагрузкой (, то есть , количество клиентов, подключающихся одновременно).Системы балансировки нагрузки и аварийного переключения часто используются для масштабирования реализации сервера.
В одноранговой сети два или более компьютеров ( одноранговых узлов ) объединяют свои ресурсы и обмениваются данными в децентрализованной системе. Одноранговые узлы — это равноправные или равноправные узлы в неиерархической сети. В отличие от клиентов в сети клиент-сервер или клиент-очередь-клиент, одноранговые узлы взаимодействуют друг с другом напрямую. В одноранговой сети алгоритм в протоколе одноранговой связи балансирует нагрузку, и даже одноранговые узлы со скромными ресурсами могут помочь распределить нагрузку.