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 и
находится в
свободном
доступе для
ознакомления
и скачивания.
Для
того, чтобы
стать одним
из
разработчиков,
достаточно 1)
создать
аккаунт на sourceforge.net 2) прислать
имя
созданного
аккаунта на
адрес “mpansh at gmail . com”. Для любых commit в
проект есть
основной
принцип (ground rule): версия trunk в любой
момент
времени
должна
собираться и
проходить
ВСЕ тесты.
Для
управления и
планирования
проекта используется
JIRA и GreenHopper, для
трекинга
багов и issues Bonfire. Команда APCO
благодарит
компанию Atlassian за
предоставленную
возможность
использования
этих
инструментов.
В
будущем
данный
проект может
быть расширен
набором
более
сложных
методик
распределения
заданий и
использованием
более эффективных
низлежащих
библиотек
для коммуникаций,
такой как ProtoBuf.