View
388
Download
2
Category
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