Вычислительные системы предыдущего поколения
• управляемые сервера и контейнеры
• масштабируемость – за счет 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 Design
Reactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
Reactive Software Design
Reactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
Упрямый закон Амдала
GENE AMDAHL, 1967
Reactive Software Design
Reactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
Reactive Software Design
Reactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
Reactive Software Design
Reactive Manifesto v2.0 (Sept, 2014)
http://www.reactivemanifesto.org/
Actor-model
CARL 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)
СПАСИБО!
ВОПРОСЫ?

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