Введение в архитектуру клиент-серверных хранилищ

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

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

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

Три основных компонента сетевого приложения

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

Бизнес логика - правила, алгоритмы реакции приложения на действия пользователя или на внутренние события, правила обработки данных.

Слой доступа к данным - хранение, выборка, модификация и удаление данных, связанных с решаемой приложением прикладной задачей

С точки зрения программно-аппаратной реализации можно выделить ряд типовых архитектур ИС.

Архитектуры приложений для работы с базами данных

Двухзвенная архитектура

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

Клиент-серверная архитектура

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

Типичный пример двухуровненовой модели
Клиентская программа работает с данными через запросы к серверному ПО. Базовые функции приложения разделены между клиентом и сервером.
Плюсы:
  • Полная поддержка многопользовательской работы
  • Гарантия целостности данных
Минусы:
  • Бизнес логика приложений осталась в клиентском ПО. При любом изменении алгоритмов, надо обновлять пользовательское ПО на каждом клиенте.
  • Высокие требования к пропускной способности коммуникационных каналов с сервером, что препятствует использование клиентских станций иначе как в локальной сети.
  • Слабая защита данных от взлома, в особенности от недобросовестных пользователей системы.
  • Высокая сложность администрирования и настройки рабочих мест пользователей системы.
  • Необходимость использовать мощные ПК на клиентских местах.
  • Высокая сложность разработки системы из-за необходимости выполнять бизнеслогику и обеспечивать пользовательский интерфейс в одной программе.

Трехзвенная архитектура

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

Трехзвенная клиент-серверная архитектура
Основным ее отличием от предыдущей архитектуры является физическое разделение программ, отвечающих за хранение данных (СУБД) от программ эти данные обрабатывающих. Такое разделение программных компонент позволяет оптимизировать нагрузки как на сетевое, так и на вычислительное оборудование комплекса.
Третьим звеном в трехзвенной архитектуре становится сервер приложений

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

Сервер приложений располагается на выделенном сервере приложений, выполняющем функции промежуточного ПО.
Плюсы:
  • Тонкий клиент.
  • Между клиентской программой и сервером приложения передается лишь минимально необходимый поток данных - аргументы вызываемых функций и возвращаемые от них значения.
  • Сервер приложения может быть запущен в одном или нескольких экземплярах на одном или нескольких компьютерах.
  • Дешевый трафик между сервером приложений и СУБД. Трафик между сервером приложений и СУБД может быть большим, однако это всегда трафик локальной сети, а их пропускная способность достаточно велика и дешева. В крайнем случае, всегда можно запустить СП и СУБД на одной машине, что автоматически сведет сетевой трафик к нулю.
  • Дешевле наращивать функциональность и обновлять ПО.
Минусы:
  • Выше расходы на администрирование и обслуживание серверной части.

По сравнению с двухзвенной клиент-серверной архитектурой или файл-серверной архитектурой трёхуровневая архитектура обеспечивает, как правило, бо́льшую масштабируемость (за счёт горизонтальной масштабируемости сервера приложений и мультиплексирования соединений), бо́льшую конфигурируемость (за счёт изолированности уровней друг от друга). Реализация приложений, доступных из веб-браузера или из тонкого клиента, как правило, подразумевает развёртывание программного комплекса в трёхуровневой архитектуре. При этом обычно разработка трёхзвенных программных комплексов сложнее, чем для двухзвенных, также наличие дополнительного связующего программного обеспечения может налагать дополнительные издержки в администрировании таких комплексов.

Процедура «запрос — ответ»

В наиболее общем виде процесс «запрос — ответ» состоит из просьбы браузера к веб-серверу отправить ему веб-страницу и выполнения браузером данной просьбы. После этого браузер занимается отображением страницы.

При этом соблюдается такая последовательность действий.

  1. Вы вводите в адресную строку браузера http://server.com.
  2. Ваш браузер ищет IP-адрес, соответствующий доменному имени server.com.
  3. Браузер посылает запрос на главную страницу server.com.
  4. Запрос проходит по Интернету и поступает на веб-сервер server.com.
  5. Веб-сервер, получивший запрос, ищет веб-страницу на своем жестком диске.
  6. Сервер извлекает веб-страницу и отправляет ее по обратному маршруту в адрес браузера.
  7. Браузер отображает веб-страницу.
Процесс получения статичной страницы

При передаче типовой веб-страницы этот процесс осуществляется для каждого имеющегося на ней объекта: элемента графики, встроенного видео- или Flash-ролика и даже шаблона CSS.

Обратите внимание на то, что на шаге 2 браузер ищет IP-адрес, принадлежащий доменному имени server.com. У каждой машины, подключенной к Интернету, включая и ваш компьютер, есть свой IP-адрес. Но, как правило, доступ к веб-серверам осуществляется по именам, таким как google.com. Вам, должно быть, известно, что браузер обращается к вспомогательной интернет-службе, так называемой службе доменных имен (Domain Name Service (DNS)), для того чтобы найти связанный с сервером IP-адрес, а затем воспользоваться им для связи с компьютером.

При передаче динамических веб-страниц процедура состоит из большего количества действий, поскольку к ней могут привлекаться как PHP, так и MySQL.

  1. Вы вводите в адресную строку браузера http://server.com.
  2. Ваш браузер ищет IP-адрес, соответствующий доменному имени server.com.
  3. Браузер посылает запрос на главную страницу server.com.
  4. Запрос проходит по Сети и поступает на веб-сервер server.com.
  5. Веб-сервер, получивший запрос, ищет веб-страницу на своем жестком диске.
  6. Теперь, когда главная страница размещена в его памяти, веб-сервер замечает, что она представлена файлом, включающим в себя PHP-сценарии, и передает страницу интерпретатору PHP.
  7. Интерпретатор PHP выполняет PHP-код.
  8. Кое-какие фрагменты кода PHP содержат MySQL-инструкции, которые интерпретатор PHP, в свою очередь, передает процессору базы данных MySQL.
  9. База данных MySQL возвращает результаты выполнения инструкции интерпретатору PHP.
  10. Интерпретатор PHP возвращает веб-серверу результаты выполнения кода PHP, а также результаты, полученные от базы данных MySQL.
  11. Веб-сервер возвращает страницу выдавшему запрос клиенту, который отображает эту страницу на экране.
Отображение динамической страницы
В каждом из примеров возвращенные браузеру HTML-страницы могут содержать также код JavaScript, интерпретируемый локально на машине клиента. Этот код может инициировать еще один запрос, точно так же запрос может быть инициирован встроенными объектами, например изображениями.