Открыть сервис

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

Клиент-сервер — это архитектура построения вычислительной сети или программного комплекса, в которой сетевая нагрузка и вычислительные задачи распределены между поставщиками услуг (серверами) и их потребителями (клиентами). В такой модели сервер предоставляет определённые ресурсы, данные или функции, а клиент их запрашивает и использует. Взаимодействие между компонентами осуществляется по протоколам передачи данных, чаще всего по сети TCP/IP.

История

Истоки клиент-серверной архитектуры восходят к эпохе мейнфреймов 1960-х годов, когда терминалы (клиенты) подключались к центральному компьютеру (серверу) для выполнения задач. Однако классическое понимание модели сформировалось в 1980-х годах с распространением персональных компьютеров и локальных вычислительных сетей. Первыми широко известными реализациями стали файловые серверы (например, Novell NetWare) и системы управления базами данных (СУБД), такие как Oracle и Sybase, которые позволяли клиентским приложениям отправлять запросы на выборку данных, а не загружать весь файл целиком.

В 1990-х годах с развитием Всемирной паутины модель клиент-сервер стала доминирующей: веб-браузер выступает в роли клиента, а веб-сервер (например, Apache, Nginx) — в роли сервера, обслуживающего HTTP-запросы. В 2000-х годах с распространением облачных вычислений и микросервисной архитектуры модель усложнилась, но её фундаментальные принципы остались неизменными.

Принцип работы

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

Ключевые роли в этой модели:

Классификация

Клиент-серверные системы классифицируются по нескольким признакам.

По распределению функций (многоуровневая архитектура)

  1. Двухуровневая архитектура (2-tier): клиент напрямую обращается к серверу. Клиент отвечает за интерфейс и часть бизнес-логики, сервер — за хранение и обработку данных. Пример: классическая СУБД, где клиентское приложение (например, 1С) подключается к серверу базы данных.
  2. Трёхуровневая архитектура (3-tier): между клиентом и сервером данных появляется промежуточный уровень — сервер приложений. Клиент отвечает только за отображение (тонкий клиент), сервер приложений реализует бизнес-логику, а сервер данных управляет хранением. Пример: веб-приложение, где браузер (клиент) общается с веб-сервером (сервер приложений), который в свою очередь обращается к СУБД.
  3. Многоуровневая архитектура (n-tier): расширение трёхуровневой модели, где добавляются дополнительные уровни — серверы кэширования, очереди сообщений, серверы аутентификации и т.д. Используется в крупных корпоративных и облачных системах.

По типу клиента

По протоколу взаимодействия

Преимущества и недостатки

Преимущества

Недостатки

Применение

Клиент-серверная архитектура является основой для большинства современных информационных систем:

Примеры реализации

Веб-сервер и браузер

Пользователь вводит адрес сайта в браузере. Браузер (клиент) отправляет HTTP-запрос на сервер, где работает веб-сервер (например, Nginx). Сервер обрабатывает запрос, возможно, обращается к базе данных (например, PostgreSQL) для получения содержимого страницы, формирует HTML-код и отправляет его обратно браузеру. Браузер отображает страницу пользователю.

Система «Клиент-банк»

Программа «Клиент-банк» на компьютере бухгалтера (клиент) устанавливает защищённое соединение с сервером банка. Клиент отправляет платёжные поручения, сервер проверяет подлинность, обрабатывает транзакции и возвращает подтверждение. Вся финансовая информация хранится на сервере банка.

Связанные понятия

Источники

  1. Таненбаум Э., Уэзеролл Д. «Компьютерные сети». 5-е издание. — СПб.: Питер, 2012.
  2. Фаулер М. «Архитектура корпоративных программных приложений». — М.: Вильямс, 2006.
  3. Стивенс У. Р. «TCP/IP. Иллюстрированное руководство». Том 1. — М.: Вильямс, 2003.
  4. ГОСТ Р ИСО/МЭК 2382-1-2002 «Информационная технология. Словарь. Часть 1. Основные термины».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →