Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[JokerConf] Верхом на реактивных стримах

[JokerConf] Верхом на реактивных стримах

Вы из тех, кто считает, что, распараллелив любой цикл, можно улучшить перформанс, и Collection.parallelStream() — ваш лучший друг? А как вам идея — вбросить ещё пачку машин и получить распределенную обработку? Интересно? Тогда для вас этот доклад обязателен к просмотру.

Виктор познакомит слушателей со своим другом, Ориентированным (Направленным) Ациклическим Графом (или Маркизом?!), и покажет, как с его помощью была организована распределенная высокопроизводительная система обработки информации в памяти поверх нашего знакомого Java 8 Stream API.

Viktor Gamov

October 14, 2016
Tweet

More Decks by Viktor Gamov

Other Decks in Technology

Transcript

  1. Этот слайд пустой… Так нужно
    1

    View full-size slide

  2. Верхом на реактивных
    стримах
    #jokerconf
    #hazelcast
    #java8

    View full-size slide

  3. > whoami
    • Solutions Architect @Hazelcast
    • Тусуюсь с «правильными
    пацанами»
    • @gamussa везде в интернете
    Обязательно зафоловьте меня в Twitter
    Я очень интересный ©
    3

    View full-size slide

  4. Программа выступления
    • Освежим свои знания о Java 8 Streams
    • Распределяем и властвуем
    • Распределенные данные
    • Распределенные стримы
    • Как мы это сделали
    4

    View full-size slide

  5. 5
    Java 8 Streams

    View full-size slide

  6. Java 8 Streams – это…
    • Абстракция для представления
    последовательности элементов
    • не структура данных
    • передают элементы из источника через конвейер
    операций
    • операции не изменяют исходные данные
    6

    View full-size slide

  7. А почему мне не должно
    быть все равно?
    • Ты пишешь на Java в 2016
    • Стримы пришли в Java, чтобы остаться
    • Тагир смотрит на тебя как-то странно, если
    ты не используешь стримы
    7

    View full-size slide

  8. Егор @yegor256 Баруху @jbaruch, РП-105
    - Б: являются ли абстрактные анонимные Inner
    классы лучшим решением, чем лямбды?
    - E: да, конечно. Классы, какие бы ни были:
    анонимные, абстрактные, какие угодно классы.
    Классы - это классы. Лучше чем лямбды... да,
    классы лучше чем эти вот лямбды.
    9
    http://razbor-poletov.com/2016/03/episode-105.html

    View full-size slide

  9. Операции из
    java.util.stream
    • map(), flatMap(), filter()
    • reduce(), collect()
    • sorted()
    10

    View full-size slide

  10. Проблема
    • Данные могут не поместиться на одном
    компьютере
    • Данные слишком важны, чтобы храниться на
    одном компьютере
    12

    View full-size slide

  11. Репликация или шардинг?
    15
    http://book.mixu.net/distsys/single-page.html

    View full-size slide

  12. Problem
    • Data doesn’t fit just one machine
    16

    View full-size slide

  13. Решение
    • Возьмем распределенный Map aka IMap
    17

    View full-size slide

  14. Что такое Hazelcast?
    • Опинсорсный грид — IMDG
    • Распределенные
    • Кэши(IMap, JCache)
    • Java Коллекции (IList, ISet, IQueue)
    • Обмен сообщениями (Topic, RingBuffer)
    • Вычисления (ExecutorService, M-R)
    19

    View full-size slide

  15. Green
    Primary
    Green
    Backup
    Green
    Shard

    View full-size slide

  16. Path to Microservices
    25
    Highly scalable In-Memory Data Grid
    Simple and
    configurable backbone
    one jar to «rule them all»
    Hazelcast
    is a…

    View full-size slide

  17. Проблема
    • Распределение вычислений
    • Lambda serialization
    26

    View full-size slide

  18. Решение
    • Сериализуемые версия интерфейсов
    • встречайте DistributedStream
    28

    View full-size slide

  19. 31
    Jet Streams

    View full-size slide

  20. Что такое Hazelcast Jet?
    • Фреймворк распределенных вычислений общего
    назначения
    • Модель описания вычисления построена на
    ориентированном ациклическом графе
    • Построен на основе Hazelcast
    • Потенциальный конкурент Apache Spark или Apache Flink
    33

    View full-size slide

  21. DAG - ОАГ
    35

    View full-size slide

  22. Исполнение задачи
    36

    View full-size slide

  23. Вступайте в наши ряды
    • Вступай в программу Developer Preview
    • http://hazelcast.org/jet-signup
    • напишите мне [email protected]
    • Зафоловьте @hazelcast и меня @gamussa
    • Пишите свои вопросы #hazelcast #hazelcastjet
    40

    View full-size slide

  24. В качестве заключения
    • Java Stream API представляет очень широкие
    возможности для расширения
    • Война и Мир – это сложная литература
    • Андрей и Пьер – действительно главные
    персонажи
    41

    View full-size slide

  25. 42
    #jokerconf
    #hazelcast
    #java8

    View full-size slide