Распределенный объект является основной абстракцией Е1. Все сервисы, предоставляемые ОС, а также прикладное ПО строятся из распределенных объектов.
Все объекты в Е1 находятся в едином виртуальном 64-битном адресном пространстве >>. Каждый объект предоставляет один или несколько интерфейсов, состоящих из набора методов. Каждый интерфейс распределенного объекта доступен по своему уникальному 64-битному адресу. Любой объект, владеющий этим адресом, может вызывать методы данного интерфейса из любого узла сети. Все интерфейсы в Е1 содержат стандартный метод навигации, позволяющий получить указатель на любой другой интерфейс того же распределенного объекта.
Объекты в Е1 могут быть физически распределенными, т.е. хранить частичную или полную копию состояния в нескольких узлах. Часть состояния объекта, хранящаяся в узле вычислительной системы, называется репликой распределенного объекта. Распространение состояния объекта между репликами и синхронизация реплик называется репликацией объекта.
Архитектура распределенного объекта Е1 направлена на разделение семантики объекта и стратегии репликации. Разработчик объекта реализует только его семантику, т.е. функциональность в локальном, нереплицированном, случае, а алгоритм репликации разрабатывается отдельной стороной - поставщиком стратегии репликации. При этом стратегия репликации может быть универсальной, т.е. применяться для различных классов объектов. В то же время, для объектов одного класса могут применяться различные стратегии репликации.
Следуя данной цели, авторы предлагают архитектуру распределенного объекта, в которой семантика объекта и стратегия репликации реализуются различными структурными элементами. Распределенный объект представляет собой набор взаимодействующих локальных объектов. Локальный объект ограничен одним узлом распределенного вычислительного комплекса. Семантика распределенного объекта и его стратегия репликации реализуются различными локальными объектами, размещаемыми в узлах, в которых существуют реплики распределенного объекта. Отметим, что подобная архитектура распределенного объекта имплементирована в системе объектно-ориентированного промежуточного ПО Globe [50].
Структура локального объекта подобна структуре объекта языка С++ [52]. Он состоит из части фиксированной длины, содержащей поля данных и указатели на интерфейсы (таблицы методов), и структур данных, динамически выделяемых объектом в куче или стеке. В терминах С++, интерфейсы локального объекта представляют собой чисто виртуальные базовые классы, от которых пронаследован объект. Заметим, что аналогичным образом абстракция интерфейса реализована в компонентной модели COM[33].
Архитектура распределенного объекта показана на рисунке.
(a)
(b)
Архитектура распределенного объекта. a. Распределенный объект с единственной репликой; b. Распределенный объект с несколькими репликами
В тривиальном случае, когда распределенный объект имеет только одну реплику, он отождествляется с единственным локальным объектом, объектом семантики. Объект семантики содержит состояние распределенного объекта, предоставляет интерфейсы распределенного объекта и реализует его функциональность.
Во время создания ссылки на распределенный объект (>>) из узла, в котором отсутствует реплика данного объекта, в этом узле создается новая реплика. Структура распределенного объекта с несколькими репликами показана на рисунке b. В каждый узел, в котором представлен распределенный объект, помещается экземпляр объекта семантики. Во всех узлах объекты семантики данного распределенного объекта располагаются по одному и тому же виртуальному адресу, что обеспечивает глобальную доступность интерфейсов распределенного объекта по их адресам в глобальном 64-битном адресном пространстве. Для поддержания целостности распределенного объекта, объекты семантики в каждом узле дополняются локальными объектами репликации, реализующими протокол репликации распределенного объекта.
Для этого объект репликации подменяет реализации интерфейсов объекта семантики собственными реализациями, что позволяет ему обрабатывать вызовы методов распределенного объекта. При обработке вызова объект репликации может обращаться к объекту семантики для выполнения необходимых операций над локальным состоянием объекта, а также взаимодействовать с удаленными объектами репликации для синхронизации реплик и удаленного выполнения операций. Подмена интерфейсов прозрачна для других объектов и может мыслиться как агрегирование объектом репликации объекта семантики. Такая архитектура позволяет избежать накладных расходов, связанных с поддержкой объекта репликации, для объектов, которые представлены только в одном узле, т.е. фактически не являются распределенными. Если впоследствии у распределенного объекта снова остается одна реплика, объект репликации может быть уничтожен.
Описанная архитектура распределенного объекта обладает двумя важными свойствами. Во-первых, она эффективно разделяет семантику объекта и стратегию репликации. Во-вторых, она не накладывет каких-либо существенных ограничений на используемые алгоритмы репликации. Для каждого объекта может применяться стратегия репликации, обеспечивающая при заданных характеристиках надежности максимально эффективный доступ к объекту с учетом его семантики.
|