Проект с открытым исходным кодом APCO

APCO (AdaPtive COmputation framework) является фреймворком для распределенного вычисления независимых вычислительных заданий в слабо-связной сети из обычных компьютеров.

Архитектура

Фреймворк для распределенных вычислений APCO является системой с централизованным управлением для удаленного запуска заданий и централизованного сбора результатов их работы. В системе есть два типа узлов: центральный и рабочий узел. Рабочий узел отвечает за исполнение вычислительных заданий. Рабочий узел, или брокер, распределяет задания в пассивном режиме. То есть брокер ожидает запроса от рабочего узла и отвечает на запрос ответом с описанием задания. После выполнения задания рабочий узел самостоятельно уведомляет об окончании работы центральный узел и отправляет результат на тот же (или другой) узел.

Для реализации продукта APCO был использован язык программирования Java версии 1.6, RESTfull фреймворк CXF для обеспечения коммуникации между узлами, Spring 3.0 для конфигурации, Maven 2.2 для поддержки автоматизированной сборки.

Установка

Скачать исходники можно с помощью клиента SVN, запустив следующую команду в директорию для установки:

svn co https://apco.svn.sourceforge.net/svnroot/apco apco

Запуск и настройка

Запуск системы на одном компьютере, на одном кластере или нескольких кластерах производится относительно просто. Для инициации процесса распределенных вычислений с помощью проекта APCO, достаточно скомпилировать проект APCO из корневой папки APCO:

mvn install

Для запуска брокера достаточно из папки apco-service проекта выполнить команду:

mvn exec:java

Затем на локальной машине c адресом <host> запуститься сервис, прослушивающий порт 9000. Для запуска сервиса вычислительного узла, достаточно из папки apco-client проиграть команду:

mvn exec:java Dserver.url=http://<host>:9000

Непосредственно после активации вычислительные узлы начинают обращаться с брокеру с запросом на вычисление.

Реализация на языке Java делает проект APCO доступным для запуска на в гетерогенной среде с различными операционными системами. Существуют другие реализации похожей пассивной архитектуры, такие как SETI@HOME[106], BOINC[107]. Среди отечественных разработок стоит отметить известный продукт X-Com. Данный проект отличается простотой использования, легкостью развертывания и наличием доступного исходного кода, что делает его полезным в целях обучения и небольших некоммерческих проектах.

Требования к среде

Необходимым для запуска условиями является наличие виртуальной машины Java 1.6+ и поставки программ (для вычислительного узла или для брокера), а также сетевой доступности брокера для вычислительного узла.

Для запуска на вычислительных узлах необходимо наличие виртуальной машины Java версии 1.6+. Пакет программ был оформлен в виде проекта APCO и находится в свободном доступе для ознакомления и скачивания.

Разработка APCO

Для того, чтобы стать одним из разработчиков, достаточно 1) создать аккаунт на sourceforge.net 2) прислать имя созданного аккаунта на адрес “mpansh at gmail . com”. Для любых commit в проект есть основной принцип (ground rule): версия trunk в любой момент времени должна собираться и проходить ВСЕ тесты.

Для управления и планирования проекта используется JIRA и GreenHopper, для трекинга багов и issues Bonfire. Команда APCO благодарит компанию Atlassian за предоставленную возможность использования этих инструментов.

Будущее развитие

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