Let's Take a Look at Akka-Java

Preview:

Citation preview

Вычислительные системы предыдущего поколения• управляемые сервера и контейнеры • масштабируемость – за счет 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

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

http://www.reactivemanifesto.org/

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

http://www.reactivemanifesto.org/

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

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

http://www.reactivemanifesto.org/

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

http://www.reactivemanifesto.org/

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

http://www.reactivemanifesto.org/

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 …

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

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

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

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

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

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

• Serializable • etc.

vs.

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

equals, hashCode – ready!

RandomGeneratorActor in Java7

Process message somehow here

It’s unfortunate…

@venkat_s

Java 8 Key Features• Streams • Lambdas • Parallel Operations

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

RandomGeneratorActor in Java8

PartialFunction<Object, BoxedUnit>

vs.

Pattern matching

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

An actor without ActorRef

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

Main Application: Java vs. Scala

GameActor in Java8

Predicate<DepositMsg>

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

GameActor на Scala

Actor Tree

Supervision Model…somewhere in UserActor

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

Remote actors

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)

СПАСИБО!

ВОПРОСЫ?

Recommended