Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Распределение объектов

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

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

Моделирование распределения объектов состоит из следующих этапов:

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

2. Затем рассмотрите типичные взаимодействия между связанными множе­ствами объектов. Расположите множества объектов с высокой степенью вза­имодействия рядом, чтобы уменьшить стоимость коммуникации. Разнесите по разным узлам объекты, которые слабо взаимодействуют между собой.

3. Далее рассмотрите распределение ответственности в системе. Перераспре­делите объекты так, чтобы сбалансировать загрузку каждого узла.

4. Не забудьте о безопасности, подвижности и качестве услуг и учтите эти со­ображения при размещении объектов.

5. Изобразите объекты на диаграмме одним из двух способов:

- включив объекты непосредственно в узлы на диаграмме развертывания;

- явно указав положение объекта с помощью помеченного значения.

На рис. 23.5 представлена диаграмма объектов (см. главу 14), которая моделиру­ет распределение объектов в гипотетической системе розничной торговли. Ценность этой диаграммы в том, что она позволяет визуализировать физическое размещение ^слючевых объектов. Как видно, два объекта Order (Заказ) и Sales (Продажи)

находятся в узле Workstation (РабочаяСтанция), два других (ObserverAgent агент-Наблюдения, и Product, Продукт) - в узле Server и один (ProductTable' таблицаПродуктов) - в узле DataWarehouse (ХранилищеДанных).

Мигрирующие объекты

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

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

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

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

Моделирование миграции объектов осуществляется так:

1. Выберите механизм (см. главу 28) физической транспортировки объектов между узлами.

2. Представьте на диаграмме размещение объекта в узле, явно указав его поло­жение с помощью помеченного значения.

3. С помощью стереотипных сообщений become и copy (см. главу 13) изобра­зите перемещение объекта на новый узел.

4. Рассмотрите вопросы синхронизации (сохранение корректности состояния клонированных объектов) и идентичности (сохранение имени объекта при его перемещении).

На рис. 23.6 приведена диаграмма кооперации (см. главу 18), моделирующая миграцию Web-агента, который перемещается между узлами, собирая информацию торгуясь за ресурсы с целью автоматически найти минимальную стоимость билета. Точнее, на этой диаграмме показан экземпляр (с именем t) класса ТурАгент, мигрирующий с одного сервера на другой. По пути этот объект взаимодействует анонимными экземплярами класса Аукционер на каждом узле и в конце концов оставляет результат торгов объекту Маршрут, который расположен на узле Client server.

Советы

Хорошо структурированная модель с пространственно-временными свойствами Обладает следующими особенностями:

  • описывает только те пространственно-временные свойства, которые необходимы и достаточны для понимания желаемого поведения системы;

  • централизует использование этих свойств, так чтобы их легко было найти и модифицировать.

Изображая в UML пространственное или временное свойство, руководствуйтесь следующими принципами:

  • давайте отметкам времени (то есть соответствующим сообщениям) осмысленные имена;

  • проводите явное различие между временными выражениями, значениями которых является абсолютное и относительное время;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]