Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Разделение приложений по уровням

Читайте также:
  1. II. Разделение чаши
  2. Intel и студенческие лаборатории проводят конкурс проектов приложений для Intel Atom
  3. Временное разделение каналов
  4. и приложений к ним.
  5. Использование Интернет-приложений
  6. Лабораторная работа №1. Разделение и идентификация неорганических анионов методом круговой бумажной хроматографии
  7. Лабораторная работа№2. Разделение катионов и определение Rf методом бумажной хроматографии

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

уровень пользовательского интерфейса;

уровень обработки;

уровень данных.

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

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

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

 

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

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

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

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

 

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

Один из подходов к организации клиентов и серверов — это распределение про­грамм, по различным машинам, как показано на рисунке. Простейшим является разделение на два типа машин: на клиенты и на серверы.

 

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

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

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

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

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

 

 

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

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

 

 


Репликация — хранение нескольких копий одних и тех же данных.

 

Данные реплицируются для повышения надежности системы.

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

Другой довод в пользу репликации данных — производительность.

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

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

 

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

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

 


Дата добавления: 2015-08-18; просмотров: 242 | Нарушение авторских прав


Читайте в этой же книге: Прозрачность | Линеаризуемость и последовательная непротиворечивость | Причинная непротиворечивость | Слабая непротиворечивость | Свободная непротиворечивость | Поэлементная непротиворечивость |
<== предыдущая страница | следующая страница ==>
Масштабируемость| Строгая непротиворечивость

mybiblioteka.su - 2015-2024 год. (0.007 сек.)