"Посмотрим на Акку-Джаву" Дмитрий Мантула
TRANSCRIPT
![Page 1: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/1.jpg)
![Page 2: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/2.jpg)
Вычислительные системы предыдущего поколения• управляемые сервера и контейнеры • масштабируемость – за счет 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: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/3.jpg)
Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
![Page 4: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/4.jpg)
Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
![Page 5: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/5.jpg)
Упрямый закон АмдалаGENE AMDAHL, 1967
![Page 6: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/6.jpg)
Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
![Page 7: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/7.jpg)
Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
![Page 8: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/8.jpg)
Reactive Software DesignReactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
![Page 9: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/9.jpg)
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 10: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/10.jpg)
Что такое Actor?•Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков
•Внутри только single-thread выполнение
•У каждого актора есть надзиратель
Что может делать Actor?•Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами
Все состояние – внутри акторов No shared mutable state
![Page 11: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/11.jpg)
Класс сообщения•Обязательно: purely-immutable •Желательно: serializable •Хорошая практика: объявлять рядом с Actor-классом
• Serializable • etc.
vs.
• n – immutable • конструктор, toString,
equals, hashCode – ready!
![Page 12: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/12.jpg)
RandomGeneratorActor in Java7
Process message somehow here
It’s unfortunate…
@venkat_s
![Page 13: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/13.jpg)
Java 8 Key Features• Streams • Lambdas • Parallel Operations
• No PermGen • New Date & Time API • Concurrent Accumulators • Nashorn (HH’ам на заметку: Java теперь ближе к JavaScript) • Base64
![Page 14: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/14.jpg)
RandomGeneratorActor in Java8
PartialFunction<Object, BoxedUnit>
vs.
Pattern matching
![Page 15: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/15.jpg)
Использование актор-системы из приложения: Java
An actor without ActorRef
![Page 16: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/16.jpg)
Использование актор-системы из приложения: Scala
![Page 17: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/17.jpg)
Main Application: Java vs. Scala
![Page 18: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/18.jpg)
GameActor in Java8
Predicate<DepositMsg>
![Page 19: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/19.jpg)
Реализация spin()
![Page 20: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/20.jpg)
GameActor на Scala
![Page 21: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/21.jpg)
Actor Tree
![Page 22: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/22.jpg)
Supervision Model…somewhere in UserActor
![Page 23: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/23.jpg)
Routing• RoundRobin • Random • SmallestMailbox • Broadcast • ScatterGatherFirstCompleted • (Custom)
![Page 24: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/24.jpg)
Remote actors
![Page 25: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/25.jpg)
Akka Environment• Тестирование – TestKit • Akka Cluster • Akka IO • Software Transactional Memory (Akka STM) • Finite State Machines (Akka FSM) • Durable Mailboxes & other persistence models • Pub/Sub
• Akka <—> Spring (actors as prototype-scoped beans) • Akka <—> Apache Camel (messages endpoint)
![Page 26: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/26.jpg)
![Page 27: "Посмотрим на Акку-Джаву" Дмитрий Мантула](https://reader033.vdocuments.mx/reader033/viewer/2022042701/55cebed1bb61eb21598b45b5/html5/thumbnails/27.jpg)
СПАСИБО!
ВОПРОСЫ?