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

PPTX
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
Ontico
 
PDF
Интеграционная шина на базе InterSystems Ensemble
InterSystems
 
PDF
Аудит веб-приложений
Альбина Минуллина
 
PDF
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
 
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
PPTX
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ontico
 
PDF
High Availability Solutions with MySQL
Arvids Godjuks
 
PDF
Caching: nginx vs apache/varnish. Drupal 7 + SSL.
Slava Merezhko
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
Ontico
 
Интеграционная шина на базе InterSystems Ensemble
InterSystems
 
Аудит веб-приложений
Альбина Минуллина
 
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
Ускорение показа превью изображений в Яндекс.Диске / Сергей Нечаев (Яндекс)
Ontico
 
High Availability Solutions with MySQL
Arvids Godjuks
 
Caching: nginx vs apache/varnish. Drupal 7 + SSL.
Slava Merezhko
 

Viewers also liked (20)

PPTX
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
PPT
HighLoad++ 2009 In-Memory Data Grids
Alexey Kharlamov
 
PDF
Phoenix for Rubyists
Mike North
 
PDF
50 nouvelles choses que l'on peut faire en Java 8
José Paumard
 
PDF
Алексей Николаенков, Devexperts
Nata_Churda
 
PPTX
Code review at large scale
Mikalai Alimenkou
 
PDF
Amazon cloud – готовим вместе
Vitebsk Miniq
 
PDF
Hazelcast for Terracotta Users
Hazelcast
 
PDF
ЖК Зорге 9
IRCIT.Uspeshnyy
 
PDF
50 new things we can do with Java 8
José Paumard
 
PPTX
JFokus 50 new things with java 8
José Paumard
 
PPTX
Gamification in outsourcing company: experience report.
Mikalai Alimenkou
 
PPTX
Java 8, the Good, the Bad and the Ugly
Mikalai Alimenkou
 
PDF
Очень вкусный фрукт Guava
Egor Chernyshev
 
PDF
ArrayList et LinkedList sont dans un bateau
José Paumard
 
PPTX
Hibernate performance tuning
Mikalai Alimenkou
 
PDF
Going reactive in java
José Paumard
 
PDF
Free your lambdas
José Paumard
 
PPTX
Maven 3 : уличная магия
Aleksey Solntsev
 
PPTX
Hazelcast Deep Dive (Paris JUG-2)
Emrah Kocaman
 
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
HighLoad++ 2009 In-Memory Data Grids
Alexey Kharlamov
 
Phoenix for Rubyists
Mike North
 
50 nouvelles choses que l'on peut faire en Java 8
José Paumard
 
Алексей Николаенков, Devexperts
Nata_Churda
 
Code review at large scale
Mikalai Alimenkou
 
Amazon cloud – готовим вместе
Vitebsk Miniq
 
Hazelcast for Terracotta Users
Hazelcast
 
ЖК Зорге 9
IRCIT.Uspeshnyy
 
50 new things we can do with Java 8
José Paumard
 
JFokus 50 new things with java 8
José Paumard
 
Gamification in outsourcing company: experience report.
Mikalai Alimenkou
 
Java 8, the Good, the Bad and the Ugly
Mikalai Alimenkou
 
Очень вкусный фрукт Guava
Egor Chernyshev
 
ArrayList et LinkedList sont dans un bateau
José Paumard
 
Hibernate performance tuning
Mikalai Alimenkou
 
Going reactive in java
José Paumard
 
Free your lambdas
José Paumard
 
Maven 3 : уличная магия
Aleksey Solntsev
 
Hazelcast Deep Dive (Paris JUG-2)
Emrah Kocaman
 
Ad

More from Vitebsk Miniq (20)

PDF
Runtime compilation and code execution in groovy
Vitebsk Miniq
 
PDF
The 5 Laws of Software Estimates
Vitebsk Miniq
 
PDF
Latest & Greatest Observability Release 7.9
Vitebsk Miniq
 
PDF
Тестирование Spring-based приложений
Vitebsk Miniq
 
PDF
Семантический поиск - что это, как работает и чем отличается от просто поиска
Vitebsk Miniq
 
PDF
Локализационное тестирование - это не только перевод
Vitebsk Miniq
 
PDF
ISTQB Сертификация тестировщиков: быть или не быть?
Vitebsk Miniq
 
PDF
Apollo GraphQL Federation
Vitebsk Miniq
 
PDF
Who is a functional tester
Vitebsk Miniq
 
PDF
Crawling healthy
Vitebsk Miniq
 
PDF
Вперед в прошлое
Vitebsk Miniq
 
PDF
CloudFormation experience
Vitebsk Miniq
 
PDF
Learning Intelligence: the story of mine
Vitebsk Miniq
 
PDF
Как программисты могут спасти мир
Vitebsk Miniq
 
PDF
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
 
PDF
Distributed tracing system in action. Instana Tracing.
Vitebsk Miniq
 
PDF
Насорил - убери!
Vitebsk Miniq
 
PDF
Styled-components. Что? Когда? И зачем?
Vitebsk Miniq
 
PDF
Красные флаги и розовые очки
Vitebsk Miniq
 
PDF
CSS. Практика
Vitebsk Miniq
 
Runtime compilation and code execution in groovy
Vitebsk Miniq
 
The 5 Laws of Software Estimates
Vitebsk Miniq
 
Latest & Greatest Observability Release 7.9
Vitebsk Miniq
 
Тестирование Spring-based приложений
Vitebsk Miniq
 
Семантический поиск - что это, как работает и чем отличается от просто поиска
Vitebsk Miniq
 
Локализационное тестирование - это не только перевод
Vitebsk Miniq
 
ISTQB Сертификация тестировщиков: быть или не быть?
Vitebsk Miniq
 
Apollo GraphQL Federation
Vitebsk Miniq
 
Who is a functional tester
Vitebsk Miniq
 
Crawling healthy
Vitebsk Miniq
 
Вперед в прошлое
Vitebsk Miniq
 
CloudFormation experience
Vitebsk Miniq
 
Learning Intelligence: the story of mine
Vitebsk Miniq
 
Как программисты могут спасти мир
Vitebsk Miniq
 
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
 
Distributed tracing system in action. Instana Tracing.
Vitebsk Miniq
 
Насорил - убери!
Vitebsk Miniq
 
Styled-components. Что? Когда? И зачем?
Vitebsk Miniq
 
Красные флаги и розовые очки
Vitebsk Miniq
 
CSS. Практика
Vitebsk Miniq
 
Ad

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 Вопросы