Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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
Вопросы

More Related Content

Async Gateway или Разработка системы распределенных вычислений с нуля

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