Облачные вычисления
Требования
Реализуйте механизм, позволяющий выполнять ряд операций на удаленных
компьютерах, предварительно зарегистрированных в рамках облака (кластера). С
точки зрения прикладных программ вызов кода на удаленном компьютере ничем не
должен отличаться от локального. Не должно также требоваться предварительного
развертывания приложения на удаленном компьютере, т.е. требуется обеспечить
маршалинг и передачу не только данных, но и кода. При оптимизации следует
исходить из соображений, что удаленный вызов имеет смысл для больших объемов
вычислений и существенных объемов данных.
Оcновные элементы:
- базовый механизм передачи и запуска (код, данные), а также балансировки
загрузки;
- функция/макрос, обеспечивающая декларацию удаленно исполняемой функции;
- вариант map с параллельным и распределенным исполнением (учитывайте
многоядерность современных машин).
Дополнительные требования
Обеспечте поддержку следующих элементов:
- оптимизация передачи данных по сети: диспетчер заданий будет стараться
задачу отдать тому узлу, на котором уже развернут соответствующий код и есть
соответствующие данные;
- сделайте механизм асинхронного запуска удаленных вычислений с поддержкой
мониторинга прогресса;
- обеспечьте поддержку транспорта Java-объектов;
- обеспечьте поддержку транспорта Clojure- и Java-кода в форме байт-кода.