Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

1.332 Aufrufe

Veröffentlicht am

Многие аналитики предрекают реактивному программированию большое будущее в решении задач Mobile и Big Data.
TypeSafe, разработчики языка Scala, создали многообещающий реактивный фреймворк Akka, который "дружит" с Java.
Чем он может быть интересен Java-разработчикам? Сможет ли Akka+Java конкурировать с Akka+Scala? И как ей в этом помогут новые фичи Java 8?
Об этом я расскажу в своем докладе "Посмотрим на Акку-Джаву".

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

  1. 1. Вычислительные системы предыдущего поколения • управляемые сервера и контейнеры • масштабируемость – за счет 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
  2. 2. Reactive Software Design Reactive Manifesto v2.0 (Sept, 2014) http://www.reactivemanifesto.org/
  3. 3. Reactive Software Design Reactive Manifesto v2.0 (Sept, 2014) http://www.reactivemanifesto.org/
  4. 4. Упрямый закон Амдала GENE AMDAHL, 1967
  5. 5. Reactive Software Design Reactive Manifesto v2.0 (Sept, 2014) http://www.reactivemanifesto.org/
  6. 6. Reactive Software Design Reactive Manifesto v2.0 (Sept, 2014) http://www.reactivemanifesto.org/
  7. 7. Reactive Software Design Reactive Manifesto v2.0 (Sept, 2014) http://www.reactivemanifesto.org/
  8. 8. 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 …
  9. 9. Что такое Actor? •Event-driven объект •Изолированный •Легковесный •Потребляет только память, не держит потоков •Внутри только single-thread выполнение •У каждого актора есть надзиратель Что может делать Actor? •Создавать другие акторы •Посылать сообщения •Менять поведение •Наблюдать за другими акторами Все состояние – внутри акторов No shared mutable state
  10. 10. Класс сообщения •Обязательно: purely-immutable •Желательно: serializable •Хорошая практика: объявлять рядом с Actor-классом • Serializable • etc. vs. • n – immutable • конструктор, toString, equals, hashCode – ready!
  11. 11. RandomGeneratorActor in Java7 Process message somehow here It’s unfortunate… @venkat_s
  12. 12. Java 8 Key Features •Streams •Lambdas •Parallel Operations •No PermGen •New Date & Time API •Concurrent Accumulators •Nashorn (HH’ам на заметку: Java теперь ближе к JavaScript) •Base64
  13. 13. RandomGeneratorActor in Java8 PartialFunction<Object, BoxedUnit> vs. Pattern matching
  14. 14. Использование актор-системы из приложения: Java An actor without ActorRef
  15. 15. Использование актор-системы из приложения: Scala
  16. 16. Main Application: Java vs. Scala
  17. 17. GameActor in Java8 Predicate<DepositMsg>
  18. 18. Реализация spin()
  19. 19. GameActor на Scala
  20. 20. Actor Tree
  21. 21. Supervision Model …somewhere in UserActor
  22. 22. Routing •RoundRobin •Random •SmallestMailbox •Broadcast •ScatterGatherFirstCompleted •(Custom)
  23. 23. Remote actors
  24. 24. 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)
  25. 25. СПАСИБО! ВОПРОСЫ?

×