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/