27

Let's Take a Look at Akka-Java

Embed Size (px)

Citation preview

Page 1: Let's Take a Look at Akka-Java
Page 2: Let's 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: Let's Take a Look at Akka-Java

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

http://www.reactivemanifesto.org/

Page 4: Let's Take a Look at Akka-Java

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

http://www.reactivemanifesto.org/

Page 5: Let's Take a Look at Akka-Java

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

Page 6: Let's Take a Look at Akka-Java

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

http://www.reactivemanifesto.org/

Page 7: Let's Take a Look at Akka-Java

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

http://www.reactivemanifesto.org/

Page 8: Let's Take a Look at Akka-Java

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

http://www.reactivemanifesto.org/

Page 9: Let's 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 10: Let's Take a Look at Akka-Java

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

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

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

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

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

Page 11: Let's Take a Look at Akka-Java

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

• Serializable • etc.

vs.

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

equals, hashCode – ready!

Page 12: Let's Take a Look at Akka-Java

RandomGeneratorActor in Java7

Process message somehow here

It’s unfortunate…

@venkat_s

Page 13: Let's 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 14: Let's Take a Look at Akka-Java

RandomGeneratorActor in Java8

PartialFunction<Object, BoxedUnit>

vs.

Pattern matching

Page 15: Let's Take a Look at Akka-Java

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

An actor without ActorRef

Page 16: Let's Take a Look at Akka-Java

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

Page 17: Let's Take a Look at Akka-Java

Main Application: Java vs. Scala

Page 18: Let's Take a Look at Akka-Java

GameActor in Java8

Predicate<DepositMsg>

Page 19: Let's Take a Look at Akka-Java

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

Page 20: Let's Take a Look at Akka-Java

GameActor на Scala

Page 21: Let's Take a Look at Akka-Java

Actor Tree

Page 22: Let's Take a Look at Akka-Java

Supervision Model…somewhere in UserActor

Page 23: Let's Take a Look at Akka-Java

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

Page 24: Let's Take a Look at Akka-Java

Remote actors

Page 25: Let's 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

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

Page 26: Let's Take a Look at Akka-Java
Page 27: Let's Take a Look at Akka-Java

СПАСИБО!

ВОПРОСЫ?