Вычислительный агент (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м (Какие начальные требования?)
Строка 10: Строка 10:
  
 
=== Что это за проект? ===
 
=== Что это за проект? ===
Целью проекта является реализация вычислительного агента - программы, позволяющей удаленно запускать расчеты на вычислительном ресурсе (ПК, сервере, кластере). Агент выполняется в фоновом режиме на ресурсе и связывается по сети с сервером, который назначает вычислительные задания. Для каждого назначенного задания агент выполняет загрузку входных данных, запуск заданной команды, мониторинг запущенного процесса и передачу на сервер выходных данных. Подобные агенты являются одним из элементов архитектуры многих систем распределенных вычислений, позволяющих, например, проводить расчеты на простаивающих персональных компьютерах.
+
Целью проекта является реализация вычислительного агента - программы, позволяющей удаленно запускать расчеты на компьютере. Будучи запущенным агент обслуживает поступающие по сети запросы клиентов на запуск вычислительных заданий. Для каждого полученного задания агент выполняет запуск заданной команды, мониторинг запущенного процесса и передачу клиенту полученных результатов. Подобные агенты являются одним из элементов архитектуры многих систем распределенных вычислений.
  
 
=== Чему вы научитесь? ===
 
=== Чему вы научитесь? ===
* Знакомство с распределенными вычислительными системами
+
* Создавать консольные приложения на Python
* Работа с потоками и внешними процессами
+
* Работать с процессами и потоками
* Реализация сетевого взаимодействия на уровне протокола HTTP
+
* Реализовывать сетевое взаимодействие на уровне протокола HTTP
  
 
=== Какие начальные требования? ===
 
=== Какие начальные требования? ===
* Программирование на Python
+
* Программирование на Python (в рамках прослушанного курса)
 
* Умение работать с Linux (желательно)
 
* Умение работать с Linux (желательно)
  
 
=== Какие будут использоваться технологии? ===
 
=== Какие будут использоваться технологии? ===
 
* Python
 
* Python
* HTTP
+
* Библиотеки для работы с HTTP (Tornado, Requests)
 
* git
 
* git
  
 
=== Темы вводных занятий ===
 
=== Темы вводных занятий ===
* Распределенные вычислительные системы
+
* Python: работа с процессами и потоками, реализация библиотек и консольных программ
 +
* Основы HTTP, архитектурный стиль REST, реализация серверных и клиентских приложений на Python
  
 
=== Направления развития ===
 
=== Направления развития ===
* Измерение производительности ресурса
+
* Измерение ресурсов, потребленных заданием (например, процессорное время)
* Измерение ресурсов, потребленных заданием
+
* Реализация ограничений на задания (время выполнения, дисковое пространство)
* Реализация ограничений на задания (время выполнения, объем данных)
+
* Мониторинг текущей загрузки машины и выполнение заданий только в моменты простоя
* Кэширование загруженных файлов
+
* Распределение заданий (балансировка нагрузки) между несколькими агентами
* Обработка отказов
+
* Обнаружение и обработка отказов агентов
* Мониторинг текущей загрузки ресурса
+
* Оптимизации (кэширование загруженных данных, совмещение передачи данных с вычислениями)
* Совмещение передачи данных с вычислениями
+
* Реализация альтернативной архитектуры с центральным сервером, к которому подключаются агенты
* Реализация собственного сервера для распределения заданий
+
* Реализация агента для запуска заданий на кластере
+
  
 
=== Критерии оценки ===
 
=== Критерии оценки ===
TBD
+
* 4-5 - простейшая реализация агента с синхронной обработкой запросов
 +
* 6-7 - реализация агента с асинхронной обработкой запросов и ограничением на число одновременно выполняемых заданий
 +
* 8-10 - реализация консольного клиента для взаимодействия с агентом, получение информации о состоянии агента

Версия 23:48, 15 декабря 2014

Ментор Олег Сухорослов
Учебный семестр Весна 2015
Учебный курс 1-й курс
Проект можно развивать на летней практике



Что это за проект?

Целью проекта является реализация вычислительного агента - программы, позволяющей удаленно запускать расчеты на компьютере. Будучи запущенным агент обслуживает поступающие по сети запросы клиентов на запуск вычислительных заданий. Для каждого полученного задания агент выполняет запуск заданной команды, мониторинг запущенного процесса и передачу клиенту полученных результатов. Подобные агенты являются одним из элементов архитектуры многих систем распределенных вычислений.

Чему вы научитесь?

  • Создавать консольные приложения на Python
  • Работать с процессами и потоками
  • Реализовывать сетевое взаимодействие на уровне протокола HTTP

Какие начальные требования?

  • Программирование на Python (в рамках прослушанного курса)
  • Умение работать с Linux (желательно)

Какие будут использоваться технологии?

  • Python
  • Библиотеки для работы с HTTP (Tornado, Requests)
  • git

Темы вводных занятий

  • Python: работа с процессами и потоками, реализация библиотек и консольных программ
  • Основы HTTP, архитектурный стиль REST, реализация серверных и клиентских приложений на Python

Направления развития

  • Измерение ресурсов, потребленных заданием (например, процессорное время)
  • Реализация ограничений на задания (время выполнения, дисковое пространство)
  • Мониторинг текущей загрузки машины и выполнение заданий только в моменты простоя
  • Распределение заданий (балансировка нагрузки) между несколькими агентами
  • Обнаружение и обработка отказов агентов
  • Оптимизации (кэширование загруженных данных, совмещение передачи данных с вычислениями)
  • Реализация альтернативной архитектуры с центральным сервером, к которому подключаются агенты

Критерии оценки

  • 4-5 - простейшая реализация агента с синхронной обработкой запросов
  • 6-7 - реализация агента с асинхронной обработкой запросов и ограничением на число одновременно выполняемых заданий
  • 8-10 - реализация консольного клиента для взаимодействия с агентом, получение информации о состоянии агента