Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
500
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

n-уровневое развертывание

n-уровневый шаблон представляет общую схему развертывания, при которой компоненты приложения развернуты на одном или более серверах. Чаще всего используются 2-уровневый, 3-уровневый или 4-уровневый шаблон, как описывается в следующих разделах. Обычно все компоненты слоя размещаются на одном уровне, но это не является обязательным правилом. Нет требования по абсолютному совпадению слоев и уровней, рабочая нагрузка может быть распределена между несколькими серверами в случае необходимости. Например, разные аспекты бизнес-логики могут располагаться на разных уровнях.

2-уровневое развертывание

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

Рис. 17

2-уровневое развертывание с размещением всего кода приложения на клиенте

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

3-уровневое развертывание

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

Рис. 18

3-уровневое развертывание с вынесением кода приложения на отдельный уровень

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

4-уровневое развертывание

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

Рис. 19

4-уровневое развертывание, при котором код Веб-приложения и бизнес-логика размещаются на разных уровнях

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

Развертывание веб-приложения

Используйте распределенное развертывание для Веб-приложений, если из соображений безопасности бизнес-логика не может быть развернута на внешнем Веб-сервере. Взаимодействие посредством обмена сообщений и TCP-протокол с бинарным кодированием обеспечит лучшую производительность для бизнес-слоя. Также необходимо продумать балансировку нагрузки для распределения запросов, так чтобы они обрабатывались разными Веб-серверами, это поможет избежать привязки к конкретному серверу при проектировании масштабируемых Веб-приложений. Используйте в Веб-приложении компоненты без сохранения состояния. Более подробно эти вопросы рассматриваются в разделе «Шаблоны развертывания для обеспечения наилучшей производительности» далее в этой главе.

Развертывание насыщенного Интернет-приложения

Распределенная архитектура – наиболее подходящий сценарий развертывания в реализациях насыщенных Интернет-приложений (RIA), поскольку позволяет переносить логику представления на клиент. Если бизнес-логика приложения совместно используется другими приложениями, используйте распределенное развертывание. Кроме того, предусмотрите для бизнес-логики интерфейс взаимодействия на основе сообщений.

Развертывание насыщенного клиентского приложения

При n-уровневом развертывании на клиенте могут располагаться логика представления и бизнес-логика или только логика представления. Рис. 7 иллюстрирует вариант, когда на клиенте размещаются логика представления и бизнес-логика.

Рис. 20

Насыщенный клиент, бизнес-слой которого размещается на клиентском уровне

На рис. 8 проиллюстрирован вариант размещения бизнес-логики и логики доступа к данным на сервере приложений.

Рис. 21

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

Шаблоны развертывания для обеспечения наилучшей производительности

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

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

Кластер с балансировкой нагрузки

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

Рис. 9

Кластер с балансировкой нагрузки

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

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

Соседние файлы в папке ООП