Библиотека сайта rus-linux.net
Применение принципов оптимизации к средствам компонентного развертывания и конфигурирования систем
Глава 6 из книги "Производительность приложений с открытым исходным кодом".
Оригинал: Applying Optimization Principle Patterns to Component Deployment and Configuration Tools,
Авторы: Doug C. Schmidt, William R. Otte, and Aniruddha Gokhal
Перевод: Н.Ромоданов
Обзор реализации DAnCE
В спецификации OMG D&C предоставлены стандартные форматы обмена метаданными, используемыми в жизненном цикле разработки приложений, создаваемых на основе компонентов, а также интерфейсы времени выполнения, применяемые при создания пакетов и планирования их развертывания. С помощью этих интерфейсов времени выполнения инструкции по развертыванию компонентов направляются в инфраструктуру развертывания промежуточного слоя в виде плана развертывания компонентов (component deployment plan), в котором представлен полный комплект информации, относящейся к развертыванию и конфигурированию, причем для всех экземпляров компонентов и с информацией, касающейся их подключения. Когда происходит инициализация системы DRE, эта информация должна анализироваться, компоненты должны развертываться на физических аппаратных ресурсах, и система должна своевременно быть активирована.
В данном разделе представлен краткий обзор основных архитектурных элементов и процессов, которые должны быть предоставлены в реализации, соответствующей стандартам D&C. Затем мы воспользуемся этим обзором в качестве основы при обсуждении проблем производительности и масштабируемости в проекте DAnCE, который, как это указано во введении, является нашей открытой реализацией спецификации OMG Deployment and Configuration (D&C) [9]. Данный обзор состоит из трех частей: (1) описания архитектуры времени выполнения DAnCE, в котором рассматриваются демоны и акторы, присутствующие в системе, (2) описания модели данных, определяющего структуру «планов развертывания», в которых описываются компонентные приложения, и (3) описания процесса развертывания, в котором представлен подробный обзор процесса, посредством которого реализуется развертывание распределенного приложения.
Архитектура D&C времени выполнения
На рис.6.2 показаны интерфейсы времени выполнения, определяемые спецификацией OMG D&C для развертывания и конфигурирования компонентов, представляющих собой двухслойную архитектуру.
Рис.6.2: Обзор архитектуры и разделение обязанностей согласно спецификации OMG D&C
Эта архитектура состоит из (1) набора глобальных (общесистемных) сущностей, используемых для координации развертывания, и (2) набора локальных (уровня узла) сущностей, используемых при создании экземпляров компонентов и конфигурированию их соединений и свойств, относящихся к качеству обслуживания QoS. Каждая сущность в этих глобальных и локальных слоях соответствует одной из следующих трех основных ролей:
Менеджер - Эта роль, известная как ExecutionManager (менеджер выполнения) на глобальном уровне и как NodeManager (менеджер узла) на уровне узла, состоит из демона-синглетона, который в одном контексте координирует все развертываемые сущности. Менеджер служит в качестве входной точки для всех действий, связанных с развертыванием, а также в качестве фабрики для реализаций роли ApplicationManager (менеджер приложения).
Менеджер приложения - Эта роль, известная как DomainApplicationManager (менеджер доменного приложения) на глобальном уровне и как NodeApplicationManager (менеджер приложения узла) на уровне узла, координирует жизненный цикл работы экземпляров приложения, состоящего из компонентов. Каждый менеджер ApplicationManager представляет ровно одно приложение, собранное на основе компонентов, этот менеджер используется для инициирования развертывания и свертывания данного приложения. Эта роль также служит в качестве фабрики для реализаций роли Application (приложение).
Приложение - Эта роль, известная как DomainApplication (доменное приложение) на глобальном уровне и как NodeApplication (приложение узла) на уровне узла, представляет собой развернутый экземпляр приложения, собранного из компонентов. Она используется для завершения конфигурирования экземпляров связанных между собой компонентов, составляющих приложение, а также для начала выполнения развернутого приложения, собранного на основе этих компонентов.
Модель данных развертывания D&C
В дополнение к сущностям времени выполнения, описанным выше, в спецификации D&C также есть подробно описанная модель данных, используемая для описания компонентных приложений на протяжении всего жизненного цикла развертывания приложения. Метаданные, определенные в спецификации, предназначены для использовании в качестве:
- Формата обмена данными между различными инструментальными средствами (например, средствами разработки, моделирования приложений и создания пакетов, средствами планирования развертывания приложений), применяемые при создании приложений, и
- Директив, которые описывают настройку и развертывание приложений и используются инфраструктурой времени выполнения.
В большинстве сущностей в метаданных D&C имеется секция, в которой можно указывать сведения о конфигурировании в виде последовательности пар имя/ значение, где значение может быть произвольным типом данных. Эти сведения о конфигурации могут использоваться для описания всего, начиная от базовой информации о конфигурировании (например, точки входа в совместно используемую библиотеку и ассоциации компонент/контейнер) и до более сложной информации о конфигурировании (например, свойства, относящиеся к качеству обслуживания, или инициализации атрибутов компонентов при помощи пользовательских типов данных).
Такие метаданные в целом можно разделить на три категории: относящиеся к созданию пакетов — packaging, описывающие домен - domain и описывающих развертывание - deployment. Дескрипторы, относящиеся к созданию пакетов, используются с начала разработки приложений для указания интерфейсов компонентов, возможностей и требований. После того, как реализации будут созданы, эти метаданные в дальнейшем используются для группировки отдельных компонентов в сборки, описания соотношений с артефактами реализации, например, с совместно используемыми библиотеками (также известными как динамически компонуемые библиотеки), а также для создания пакетов, которые содержат метаданные и реализации и которые можно будет устанавливать целевой среде. Дескрипторы, описывающие домен, используются администраторами для описания возможностей аппаратных средств (например, процессора, памяти, дискового пространства, а также специальных аппаратных средств, например, приемников GPS), присутствующих в домене.
Процесс развертывания компонентов OMG D&C
Развертывание приложений, составленных из компонент, выполняется в виде процесса, состоящего согласно стандарту OMG D&C из четырех фаз. За первые две фазы отвечают роли Manager и ApplicationManager, а за последние две фазы отвечает роль Application, так как это описано ниже:
- Подготовка плана развертывания. На этой фазе план развертывания передается в менеджер ExecutionManager, который (1) анализирует план, чтобы определить, какие узлы участвуют в развертывании, и (2) разделяет план на отдельные планы с «локальным содержимым», по одному для каждого узла и содержащим информацию только для соответствующего узла. Такие планы с локальным содержимым существуют в единственном экземпляре и содержат информацию о подключении одного узла. Затем происходит обращение ко всем менеджерам NodeManage, которым передаются их планы с локальным содержимым, в результате чего происходит созданием менеджеров NodeApplicationManager и возвращаются ссылки, указывающие на них. Наконец, менеджер ExecutionManager, используя эти ссылки, создает менеджер DomainApplicationManager.
- Начало запуска. Когда менеджер DomainApplicationManager получает инструкцию о начале запуска, он делегирует эту работу менеджерам NodeApplicationManager на каждом узле. Каждый менеджер NodeApplicationManager создает приложение NodeApplication, которое загружает все экземпляры компонентов в память, выполняет предварительное конфигурирование и собирает ссылки на все конечные точки, описанные в плане развертывания. Затем эти ссылки кэшируются экземпляром приложения DomainApplication, созданным менеджером DomainApplicationManager.
- Завершение запуска. Эта фаза начинается операцией на экземпляре приложения DomainApplication, которое распределяет свои ссылки на объекты, собранные на предыдущей фазе, в каждое из приложений NodeApplication, что приводит к инициированию в них выполнения этой фазы. Все экземпляры компонентов получат информацию с окончательной конфигурацией, а затем будут созданы все соединения.
- Старт приложения. Эта фаза снова инициируется в приложении DomainApplication, которое делегирует в экземпляры приложений NodeApplication и инструктирует, чтобы все установленные экземпляры компонентов начали выполнение.
Продолжение статьи: Применение принципов оптимизации к DAnCE.