24
© 2014 Haeger Consulting Ralf Haeger Reaktive Programmierung mit Akka 29.07.2014, André Arnold

Reaktive Programmierung mit Akka€¦ · Title: Reaktive Programmierung mit Akka Author: ��Andr� Arnold Created Date: 9/3/2014 7:06:44 PM

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • © 2014 Haeger Consulting Ralf Haeger

    Reaktive Programmierung

    mit Akka

    29.07.2014, André Arnold

  • 03.09.2014 2

    Haeger Consulting

    André Arnold

    Agenda

    1. Reacitve Manifesto: Skalierbarkeit, Concurrency und Resilience

    2. Was sind Aktoren?

    3. Aktoren in Akka

    4. Resilience in Akka

    5. Akka Live!

    2

    3

    7

    10

    12

    http://www.brockhaus-ag.de/

  • 03.09.2014 3

    Haeger Consulting

    André Arnold

    Reactive Manifesto

    Merriam-Webster :

    „reactive“ „readily responsive to a stimulus”

    Responsive Scalable

    Resilient Event-

    driven

    Reactive Apps

    React to events

    React to users

    React to load

    React to failures

    http://www.brockhaus-ag.de/

  • 03.09.2014 4

    Haeger Consulting

    André Arnold

    Scalability + Concurrency Das Ziel

    http://www.brockhaus-ag.de/

  • 03.09.2014 5

    Haeger Consulting

    André Arnold

    Motivation

    Programming model

    providing

    Concur-rency

    Scalability Fault-

    tolerance

    http://www.brockhaus-ag.de/

  • 03.09.2014 6

    Haeger Consulting

    André Arnold

    Vertikale Skalierung „Scaling up“

    Multicore-Prozessoren

    Grafik: http://www.freeware-download.com/blog/wp-content/uploads/2009/03/2006_int_qua_ohne_40x30.jpg

    http://www.brockhaus-ag.de/

  • 03.09.2014 7

    Haeger Consulting

    André Arnold

    Horizontale Skalierung Scaling out

    Grafik: http://files.all-free-download.com/downloadfiles/graphic/graphic_18/

    3d_computer_network_connection_picture_6_168630.zip

    http://www.brockhaus-ag.de/

  • 03.09.2014 8

    Haeger Consulting

    André Arnold

    Actor model

    http://www.brockhaus-ag.de/

  • 03.09.2014 9

    Haeger Consulting

    André Arnold

    Processing

    Storage/State

    Communication

    Was ist ein Aktor

    Actor:

    Unit of

    Computation

    (Carl Hewitt 1973)

    http://www.brockhaus-ag.de/

  • 03.09.2014 10

    Haeger Consulting

    André Arnold

    Was kann ein Actor?

    Axiome

    Mehr Aktoren erzeugen

    Nachrichten an andere Aktoren senden

    Bestimmen, was mit der nächsten empfangen Nachricht passiert

    1

    2

    3

    http://www.brockhaus-ag.de/

  • 03.09.2014 11

    Haeger Consulting

    André Arnold

    Eigenschaften

    Isolated black box

    Single threaded illusion

    Lose gekoppelt - Message passing

    „Shared nothing“ architecture

    Reactive

    Lockfree

    Selbstheilend

    http://www.brockhaus-ag.de/

  • 03.09.2014 12

    Haeger Consulting

    André Arnold

    Anwendungsszenarien

    Thread

    Concurrency + State (ohne State genügen Threads)

    Object + Message Passing

    asynchron

    Callback / Listener

    Service

    Router

    JEE SessionBean aber leichtgewichtig

    Analogie zu Servlet

    Finite State Machine

    http://www.brockhaus-ag.de/

  • 03.09.2014 13

    Haeger Consulting

    André Arnold

    One actor is no actor!

    Actors come in systems!

    Erzeugt (+ verwaltet) Erzeugt (+ verwaltet)

    http://www.brockhaus-ag.de/

  • 03.09.2014 14

    Haeger Consulting

    André Arnold

    Akka Actor Toolkit von Typesafe

    Quelle: https://plus.google.com/+AkkaIoFlow/posts

    http://www.brockhaus-ag.de/

  • 03.09.2014 15

    Haeger Consulting

    André Arnold

    Akka - Intro

    Toolkit zur Nutzung des Actor models

    basiert auf Scala

    Java API

    Verteilbar

    Fault tolerance per Supervision

    Lightweight

    2,7 Mio / GB

    > 50 Mio Message/s on single box

    http://www.brockhaus-ag.de/

  • 03.09.2014 16

    Haeger Consulting

    André Arnold

    Akka ActorSystem

    Root

    Guardian

    P2 P1

    C1

    User

    Guardian

    System

    Guardian

    C1 C3 C2

    /P1

    /P1/C1

    http://www.brockhaus-ag.de/

  • 03.09.2014 17

    Haeger Consulting

    André Arnold

    Create

    ActorRef foo = system.actorOf(…)

    User

    Guardian

    foo

    bar

    „Top level“ Actor

    erzeugen

    „Child“ Actor

    erzeugen

    ActorRef bar= foo.actorOf(…)

    http://www.brockhaus-ag.de/

  • 03.09.2014 18

    Haeger Consulting

    André Arnold

    Send Message

    Actor

    ActorRef foo Sender

    Dispatcher

    Enqueue

    Schedule

    delivery

    Dequeue

    foo.tell (…)

    • Fire + Forget

    • Asynchron

    • Non-blocking

    • Request /Reply

    http://www.brockhaus-ag.de/

  • 03.09.2014 19

    Haeger Consulting

    André Arnold

    Become

    Verhalten ändern

    Verhalten f. nächste Message festlegen

    Ändert Interface + Verhalten

    Aufhebung mit unbecome()

    Stapelbar (Push + Pop)

    http://www.brockhaus-ag.de/

  • 03.09.2014 20

    Haeger Consulting

    André Arnold

    Fehlertoleranz + Robustheit

    http://www.brockhaus-ag.de/

  • 03.09.2014 21

    Haeger Consulting

    André Arnold

    Supervision (Fault-tolerance)

    Fehler anderer Aktoren behandeln

    Fortsetzen

    Delegieren

    Actor neustarten

    Actor Stoppen

    Error kernel

    Schalenmodell:

    Error Kernel übernimmt,

    wenn sich keiner kümmert

    http://www.brockhaus-ag.de/

  • 03.09.2014 22

    Haeger Consulting

    André Arnold

    SupervisorStrategy

    Definiert Fehlerverhalten

    Standardverhalten: Neustart des Actors

    SV

    private static SupervisorStrategy strategy

    = new OneForOneStrategy (-1, Duration.Inf(),

    new Function() {

    public Directive apply(Throwable t) {

    if (t instanceof SomeException) {

    return resume();

    } else {

    return escalate();

    }

    }

    });

    @Override

    public SupervisorStrategy supervisorStrategy() {

    return strategy;

    }

    http://www.brockhaus-ag.de/

  • 03.09.2014 23

    Haeger Consulting

    André Arnold

    Error kernel

    Selbstheilung One for one strategy

    SV

    Standardverhalten:

    Der betroffene Actor wird

    durchgestartet

    http://www.brockhaus-ag.de/

  • 03.09.2014 24

    Haeger Consulting

    André Arnold

    Error kernel

    Selbstheilung All for one strategy

    SV

    „Alle für Einen“ :

    Alle Child-Actors von SV werden

    durchgestartet (SupervisorStrategy mit

    OneForOneStrategy überschrieben)

    http://www.brockhaus-ag.de/