Async Gateway или Разработка системы распределенных...
-
Upload
vitebsk-miniq -
Category
Software
-
view
40 -
download
2
Transcript of Async Gateway или Разработка системы распределенных...
Async Gatewayили разработка системы распределенных вычислений с нуля
© 2014 Epam Systems
Требования
● Поддержка Map Reduce● Поддержка Pipeline● Оптимизация ресурсов● Оптимизация плана вычислений● Удобный API для клиентов
© 2014 Epam Systems
Технологии
● Java 7 (Java 8 в перспективе)● Hazelcast● Optaplanner● REST Services
© 2014 Epam Systems
Архитектура
Узел Узел
Узел Узел
Клиент Клиент
ДиспетчерHazelcast Hazelcast
Hazelcast Hazelcast
ХранилищеREST REST
Optaplanner powered
© 2014 Epam Systems
Работа с HazelcastЯвляется бесплатным распределенным “in-memory” хранилищем
© 2014 Epam Systems
Использование Optaplanner
2*0+2*3+2*4 2*(3+4)
Математический движок для оптимизации задач и ресурсов
© 2014 Epam Systems
Узел
● Коммуникация через Hazelcast● Динамическая загрузка новых задач● Запуск задач на исполнение● Версионность задач● Наблюдение за состоянием здоровья
узла
© 2014 Epam Systems
Загрузка новой задачи на исполнение
Узел
Наблюдатель
Файловая система
Jar JarJarJarJar
© 2014 Epam Systems
Язык описания задач (DSL)
● Последовательная и параллельная обработка задач
● Возможность дожидаться/не дожидаться выполнения всех задач в пакете
● Понятный API для составления пакетов задач
© 2014 Epam Systems
Постановка задачи
Задача: Порезать арбуз и вытянуть косточки с помощью Async Gateway
Дано: Целый арбузЦель: Дольки без косточек
© 2014 Epam Systems
Пример составления плана задачи
План_Выполнения = строитель() .начать(“Взять нож и порезать на 6 частей”, “арбуз”)
© 2014 Epam Systems
Пример составления плана задачи
План_Выполнения = строитель() .начать(“Взять нож и порезать на 6 частей”, “арбуз”)
.разделитьВыполнение(“Разрезать круглую дольку накрест”)
© 2014 Epam Systems
Пример составления плана задачи
План_Выполнения = строитель() .начать(“Взять нож и порезать на 6 частей”, “арбуз”)
.разделитьВыполнение(“Разрезать круглую дольку накрест”)
.послеВсех(“Вытянуть косточки”)
© 2014 Epam Systems
Пример составления плана задачи
План_Выполнения = строитель() .начать(“Взять нож и порезать на 6 частей”, “арбуз”)
.разделитьВыполнение(“Разрезать круглую дольку накрест”)
.послеВсех(“Вытянуть косточки”)
.послеНачать(“Подать арбуз”)
.конец();
x 24
© 2014 Epam Systems
Вопросы