Top Banner
CONFIDENTIAL 1 Посмотрим на Акку-Джаву LinkedIn: Dmytro Mantula Twitter: @diez_dev Дмитрий Мантула GlobalLogic
44

Take a Look at Akka-Java

Apr 16, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Take a Look at Akka-Java

CONFIDENTIAL1

Посмотрим на Акку-Джаву

LinkedIn: Dmytro Mantula Twitter: @diez_dev

Дмитрий Мантула GlobalLogic

Page 2: Take a Look at Akka-Java

Вычислительные системы предыдущего поколения• управляемые сервера и контейнеры • масштабируемость – за счет scale-up на более крутые сервера

• проприетарные корпоративные решения

Тренды в требованиях к вычислительным системам• response time: s -> ms • high availability: 3 nines (8h) -> 5+ nines (5- min) • storage: GBs (109) -> PBs (1015) • hardware: from mobile phone to 1000+ nodes cluster

Page 3: Take a Look at Akka-Java

Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)

http://www.reactivemanifesto.org/

Page 4: Take a Look at Akka-Java

Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)

http://www.reactivemanifesto.org/

Page 5: Take a Look at Akka-Java

Упрямый закон АмдалаGENE AMDAHL, 1967

Page 6: Take a Look at Akka-Java

Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)

http://www.reactivemanifesto.org/

Page 7: Take a Look at Akka-Java

Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)

http://www.reactivemanifesto.org/

Page 8: Take a Look at Akka-Java

Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)

http://www.reactivemanifesto.org/

Page 9: Take a Look at Akka-Java

Actor-modelCARL HEWITT, 1973

Описывает: • механизмы обработки событий • принципы хранения данных • взаимодействие между компонентами Использование: • Язык – Erlang • Телеком-системы с HA=9 nines

Page 10: Take a Look at Akka-Java

Actor-modelCARL HEWITT, 1973

Описывает: • механизмы обработки событий • принципы хранения данных • взаимодействие между компонентами Использование: • Язык – Erlang • Телеком-системы с HA=9 nines

Akka• 2006 – Нулевой релиз • 2009 – Стабильный релиз (Scala + Java) • 2013 – Становится частью Scala Standard

Library • 2014 – Стабильная поддержка Java8 (2.3.0;

akka.japi.pf) • to be continued …

Page 11: Take a Look at Akka-Java

Что такое Actor?•Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков

•Внутри только single-thread выполнение

•У каждого актора есть надзиратель

Что может делать Actor?•Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами

Page 12: Take a Look at Akka-Java

Что такое Actor?•Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков

•Внутри только single-thread выполнение

•У каждого актора есть надзиратель

Что может делать Actor?•Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами

Page 13: Take a Look at Akka-Java

Что такое Actor?•Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков

•Внутри только single-thread выполнение

•У каждого актора есть надзиратель

Что может делать Actor?•Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами

Page 14: Take a Look at Akka-Java

Что такое Actor?•Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков

•Внутри только single-thread выполнение

•У каждого актора есть надзиратель

Что может делать Actor?•Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами

Все состояние – внутри акторов No shared mutable state

Page 15: Take a Look at Akka-Java

Класс сообщения•Обязательно: purely-immutable •Желательно: serializable •Хорошая практика: объявлять рядом с Actor-классом

Page 16: Take a Look at Akka-Java

Класс сообщения•Обязательно: purely-immutable •Желательно: serializable •Хорошая практика: объявлять рядом с Actor-классом

• Serializable • etc.

vs.

• n – immutable • конструктор, toString,

equals, hashCode – ready!

Page 17: Take a Look at Akka-Java

RandomGeneratorActor in Java7

Process message somehow here

Page 18: Take a Look at Akka-Java

RandomGeneratorActor in Java7

Page 19: Take a Look at Akka-Java

RandomGeneratorActor in Java7

It’s unfortunate…

@venkat_s

Page 20: Take a Look at Akka-Java

Java 8 Key Features• Streams • Lambdas • Parallel Operations

• No PermGen • New Date & Time API • Concurrent Accumulators • Nashorn (HH’ам на заметку: Java теперь ближе к JavaScript) • Base64

Page 21: Take a Look at Akka-Java

RandomGeneratorActor in Java8

PartialFunction<Object, BoxedUnit>

Page 22: Take a Look at Akka-Java

RandomGeneratorActor in Java8

Page 23: Take a Look at Akka-Java

RandomGeneratorActor in Java8

vs.

Pattern matching

Page 24: Take a Look at Akka-Java

Использование актор-системы из приложения: Java

Page 25: Take a Look at Akka-Java

Использование актор-системы из приложения: Java

An actor without ActorRef

Page 26: Take a Look at Akka-Java

Использование актор-системы из приложения: Java

Page 27: Take a Look at Akka-Java

Использование актор-системы из приложения: Java

Page 28: Take a Look at Akka-Java

Использование актор-системы из приложения: Scala

Page 29: Take a Look at Akka-Java

Main Application: Java vs. Scala

Page 30: Take a Look at Akka-Java

GameActor in Java8

Page 31: Take a Look at Akka-Java

GameActor in Java8

Predicate<DepositMsg>

Page 32: Take a Look at Akka-Java

GameActor in Java8

Page 33: Take a Look at Akka-Java

GameActor in Java8

Page 34: Take a Look at Akka-Java

GameActor in Java8

Page 35: Take a Look at Akka-Java

Реализация spin()

Page 36: Take a Look at Akka-Java

GameActor на Scala

Page 37: Take a Look at Akka-Java

Actor Tree

Page 38: Take a Look at Akka-Java

Supervision Model…somewhere in UserActor

Page 39: Take a Look at Akka-Java

Routing• RoundRobin • Random • SmallestMailbox • Broadcast • ScatterGatherFirstCompleted • (Custom)

Page 40: Take a Look at Akka-Java

Remote actors

Page 41: Take a Look at Akka-Java

Akka Environment• Тестирование – TestKit • Akka Cluster • Akka IO • Software Transactional Memory (Akka STM) • Finite State Machines (Akka FSM) • Durable Mailboxes & other persistence models • Pub/Sub

• Spray Framework —> Akka-HTTP • Play Framework

• Akka <—> Spring (actors as prototype-scoped beans) • Akka <—> Apache Camel (messages endpoint)

• Activator

Page 42: Take a Look at Akka-Java
Page 43: Take a Look at Akka-Java

SOURCEShttp://akka.io/

http://typesafe.com

http://letitcrash.com

Coursera: Principles of Reactive Programming

@typesafe

@jboner

@rolandkuhn

@viktorklang

@odersky

Page 44: Take a Look at Akka-Java

СПАСИБО ЗА ВНИМЕНИЕ!

ВОПРОСЫ?