Файл: Технология клиент- сервер.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.04.2023

Просмотров: 102

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

2. Архитектура клиент-сервер

2.1. Двухуровневая

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

Следующий шаг в развитии клиент-серверной архитектуры - появление двухуровневой архитектуры, представленной на рисунке 2.

Рисунок 2 - Двухуровневая клиент-серверная архитектура

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

Подобный подход считался наиболее удобным решением для корпоративных распределенных вычислительных систем вплоть до начала 2000-х годов.

Однако в силу того, что большинство логики клиент-серверного приложения располагается в клиентской части, клиентская рабочая станция отвечает за большую часть обработки. Для оценки разделения объемов работ часто используется соотношение 80/20: на сервер базы данных приходится порядка двадцати процентов всей работы. Несмотря на это, база данных зачастую является узким местом производительности в таких средах.

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

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


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

2.2. Трехуровневая

Кроме описанного ранее варианта разделения двухуровневой архитектуры, также существует множество других подходов распределения программ, находящихся на уровне приложений по различным машинам, как это представлено на рисунке 3 [4].

Рисунок 3 - Альтернативные формы организации двухуровневой архитектуры клиент-сервер

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

Многоуровневая клиент-серверная архитектура обеспечила переход к объектно-ориентированному подходу в рамках задачи построения распределенных вычислительных систем.

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

Рисунок 4 - Обобщенная организация трехуровневой архитектуры

В качестве примера описывается поисковая машина в Интернете, представленная на рисунке 5.

Пользовательский интерфейс поисковой машины очень прост: пользователь вводит строку, представляющую собой набор ключевых слов, а в ответ получает список заголовков web-страниц. Результат формируется из огромной базы проиндексированных web-страниц. Ядром поисковой машины является программа, трансформирующая введенную пользователем строку в один или несколько запросов к базе данных. После этого она помещает результаты запроса в список, преобразуя его в набор HTML-страниц. В рамках модели клиент-сервер часть, отвечающая за выборку информации, обычно располагается на уровне обработки [3].


Рисунок 5 - Обобщенная организация трехуровневой поисковой машины для Интернета

2.3. Многоуровневая

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

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

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

В качестве распространенного примера горизонтального распределения рассматривается web-сервер, реплицированный на несколько машин локальной сети (см. рисунок 6).

Рисунок 6 - Пример горизонтального распределения WEB-службы

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

Сервер, которому будет передан входящий запрос, выбирается по правилу «карусели». Эта форма горизонтального распределения достаточно успешно используется для выравнивания нагрузки на серверы популярных web-сайтов.

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


3. Развитие технологии

70-е и 80-е годы XX века по традиции принято считать эпохой централизованных вычислений на мэйнфреймах IBM, которые в то время составляли более 70% мирового компьютерного бизнеса.

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

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

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

В состав клиент-серверных архитектур входят три компонента:

  • клиент - пользовательская станция, реализующая интерфейс приложения, проверку данных и отправку запросов на сервер. Кроме того, клиентский процесс также управляет локальными ресурсами;
  • сервер - выполняет служебные запросы клиента. Сервер представляет собой программное обеспечение двигателя, управляющего общими ресурсами, таким как базы данных, принтеры, линии связи, или процессоры высокой мощности. Основная цель серверного процесса - выполнение фоновых задач, общих для приложений. Простейшие формы серверов - это дисковый и файл-сервер. Если клиент передает запросы на файл или группы файлов по сети на файловый сервер, такая форма обслуживания данных требует большой пропускной способности и способна замедлить сеть с большим количеством пользователей. Более продвинутые формы серверов - это серверы баз данных, сервер транзакций и сервер приложений;
  • Middleware - промежуточный уровень, позволяющий приложениям прозрачно взаимодействовать с другими программами или процессами независимо от распоположения. Ключевым элемент Middleware является NOS (Network Operating System) - сетевая операционная система. Она необходима для предоставления таких услуг, как маршрутизация, распределение, обмен сообщениями и управления сервисной сети. NOS полагается на коммуникацию протоколов предоставления конкретных услуг. Прежде чем пользователь получит доступ к услугам сети, клиент-серверный протокол потребует от него установки физического соединения и выбора транспортных протоколов. Клиент-серверный протокол диктует, каким образом клиенты запрашивают информацию и услуги от сервера, а также как именно сервер должен отвечать на эту просьбу [8].

Мартин Батлер, председатель Butler Group, предложил новый способ реализации клиент-серверной стратегии - пятислойную модель под названием VAL (Value Added Layers). Данная структура по форме напоминает пирамиду.

Далее представлены характеристики каждого слоя:

  • Уровень 1 - Инфраструктура слоя - данный слой содержит все те компоненты, которые являются пассивными и не выполняют бизнес-логику;
  • Уровень 2 - Middleware - позволяет приложениям взаимодействовать с другими программами или процессами. Это средство отображения приложений используемых ими ресурсов. Middleware является ключом к интеграции гетерогенных программных и аппаратных сред, реализуя тот уровень интеграции, который необходим большинству организаций;
  • Уровень 3 - Программы - непосредственно приложения, выступающие в роли активных компонентов, выполняющие задачи по организации данных;
  • Уровень 4 - Хранилище - предназначено для изоляции бизнес-модели и спецификации от технологических инструментов, используемых для ее реализации;
  • Уровень 5 - Бизнес-модели - набор независимых моделей, необходимых для того, чтобы все технологии, используемые для их реализации были применимы к программной и аппаратной среде в зависимости от того, что является наиболее подходящим [6].

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

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

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

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