27

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

  • Upload
    fwdays

  • View
    481

  • Download
    3

Embed Size (px)

Citation preview

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

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

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

http://www.reactivemanifesto.org/

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

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

http://www.reactivemanifesto.org/

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

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

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

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

http://www.reactivemanifesto.org/

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

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

http://www.reactivemanifesto.org/

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

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

http://www.reactivemanifesto.org/

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

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: "Посмотрим на Акку-Джаву" Дмитрий Мантула

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

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

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

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

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

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

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

• Serializable • etc.

vs.

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

equals, hashCode – ready!

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

RandomGeneratorActor in Java7

Process message somehow here

It’s unfortunate…

@venkat_s

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

Java 8 Key Features• Streams • Lambdas • Parallel Operations

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

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

RandomGeneratorActor in Java8

PartialFunction<Object, BoxedUnit>

vs.

Pattern matching

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

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

An actor without ActorRef

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

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

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

Main Application: Java vs. Scala

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

GameActor in Java8

Predicate<DepositMsg>

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

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

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

GameActor на Scala

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

Actor Tree

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

Supervision Model…somewhere in UserActor

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

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

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

Remote actors

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

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: "Посмотрим на Акку-Джаву" Дмитрий Мантула
Page 27: "Посмотрим на Акку-Джаву" Дмитрий Мантула

СПАСИБО!

ВОПРОСЫ?