Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Mareike Stiefvater Geändert vor über 10 Jahren
1
Entspannte Nebenläufigkeit 12.03.2014 Andi Scharfstein, Ben Romberg Entwicklertag 2012
2
12.03.2014 Quelle: Air Force Weather Agency
3
12.03.2014 Quelle: Air Force Weather Agency
4
Blackout USA (14.08.2003) 12.03.2014 Ursache: Race Condition We test exhaustively, we test with third parties, and we had in excess of three million online operational hours in which nothing had ever exorcised that bug. I'm not sure that more testing would have revealed that. Mike Unum, GE Energy
5
Das Versprechen 12.03.2014 Nie wieder Race Conditions!
6
Zur Erinnerung: Race Condition 12.03.2014 a = 1 Thread 1 a = a + 1
7
Zur Erinnerung: Race Condition 12.03.2014 a = 2 Thread 1
8
Zur Erinnerung: Race Condition 12.03.2014 a = 1 Thread 1 a = a + 1 Thread 2 a = a + 1
9
Zur Erinnerung: Race Condition 12.03.2014 a = 3? a = 2? Thread 1 Thread 2
10
Zur Erinnerung: Race Condition 12.03.2014 a = 3? a = 2? Thread 1 Thread 2 Problem: Zugriff auf globale Ressourcen!
11
Eine Alternative 12.03.2014 Und wenn wir nur mit lokalen Ressourcen arbeiten?
12
Nebenläufigkeit: Aktoren-Sicht 12.03.2014 Aktor 1Aktor 2 Nachrichtenaustausch Lokale Ressourcen Ressourcen in Nachricht
13
Aktoren-Paradigma 12.03.2014 Datenfluss findet ausschließlich in wohldefinierten, gekapselten Einheiten statt
14
Was bringt mir das? 12.03.2014 Race Conditions ThreadsAktoren
15
Aktorentheorie 12.03.2014 Erstmals durch Carl Hewitt (1973) Motivation: Hunderte von vernetzten Maschinen effizient parallelisieren Weiterentwicklung u.a. durch Gul Agha (1986)
16
Was ist ein Aktor? 12.03.2014 Name (Adresse)
17
Was ist ein Aktor? 12.03.2014 Verhalten (Code) Name (Adresse)
18
Was ist ein Aktor? 12.03.2014 Verhalten (Code) Zustand (Daten) Name (Adresse)
19
Was ist ein Aktor? 12.03.2014 Verhalten (Code) Zustand (Daten) Mailbox / Message Queue Name (Adresse)
20
Was kann ein Aktor? 12.03.2014 1.Nachrichten verschicken
21
Was kann ein Aktor? 12.03.2014 1.Nachrichten verschicken 2.Eigenen Zustand/Verhalten ändern
22
Was kann ein Aktor? 12.03.2014 1.Nachrichten verschicken 2.Eigenen Zustand/Verhalten ändern 3.Neue Aktoren erstellen
23
In welcher Welt leben Aktoren? 12.03.2014 Alle Aktoren laufen immer parallel zueinander
24
In welcher Welt leben Aktoren? 12.03.2014 Alle Aktoren laufen immer parallel zueinander Die Aktoren-Theorie macht keine Aussage über Nachrichtenverhalten
25
In welcher Welt leben Aktoren? 12.03.2014 Alle Aktoren laufen immer parallel zueinander Die Aktoren-Theorie macht keine Aussage über Nachrichtenverhalten Nachrichten dürfen Reihenfolge tauschen oder sogar komplett verloren gehen
26
Zeit für ein Beispiel 12.03.2014 MainActor
27
Zeit für ein Beispiel 12.03.2014 MainActorSoccerActor int home = 0; int guest = 0;
28
Zeit für ein Beispiel 12.03.2014 MainActorSoccerActor GoalForHome GoalForGuest GameOver int home = 0; int guest = 0;
29
Akka 12.03.2014 Aktoren-Framework, unterstützt Scala und Java Gründer: Jonas Bonér (Typesafe) Bereits im Einsatz bei Amazon, AutoDesk, Credit Suisse, vmware
30
Demo 12.03.2014
31
Akka – Aktoren Performance 12.03.2014 Reaktives Modell (eventbasiert) Thread Pool mit eigenem Scheduler für leichtgewichtige Aktoren-Threads Sehr gute Performance (Zahl von Aktoren im Millionenbereich, 50 Mio. Nachrichten / sec.)
32
ask() statt tell() 12.03.2014 Ebenfalls asynchron, aber mit Rückgabewert Rückgabewert ist eine Future Futures können –synchron (blockierend) abgefragt werden –mit internen Datenstrukturen weiterverarbeitet werden –einen Callback aufrufen
33
Scaling 12.03.2014 Dank Location Transparency können Aktoren beliebig verteilt werden (Remoting) Umverteilung im lokalen Hauptspeicher Andere Kerne der gleichen Maschine (scaling up) Andere Maschinen im gleichen Netz (scaling out)
34
Monitoring 12.03.2014 Aktoren haben immer einen Supervisor Sie formen untereinander eine Baumhierarchie Fehler werden eskaliert und an der richtigen Stelle gefangen Riskante Operationen werden in eigenem Aktor isoliert (error kernel pattern)
35
Aktoren – Dos and Donts 12.03.2014 Kommunikation zwischen Aktoren sollte ausschließlich über Nachrichten stattfinden Nachrichten sollten nur aus Immutable Objects bestehen Nie wieder Race Conditions
36
Komplexeres Beispiel: Crawler für Wikipedia-API 12.03.2014 Sehr einfach zu realisieren und äußerst performant Thread-Pool mit z.B. 10 Threads Crawler Artikel-ID Artikel-Details startet Kategorie-IDKategorie-Details startet DB Cache (Batch Insert) startet
37
Fazit 12.03.2014 I'm not sure that more testing would have revealed that. Mike Unum, GE Energy
38
Fazit 12.03.2014 I'm not sure that more testing would have revealed that. Mike Unum, GE Energy Besser umdenken anstatt more of the same
39
…dann klappts auch mit dem Strom 12.03.2014
40
Quellen 12.03.2014 Rajesh K. Karmani, Gul Agha: Actors (2011) Philipp Haller, Frank Sommers: Actors in Scala (2012) Akka Dokumentation (http://akka.io, 2012)http://akka.io Ben Romberg: Intopedia: Personalisierte Beitragsempfehlungen für die Wikipedia (2010)
41
Zur Erinnerung: Deadlock 12.03.2014 Gleichzeitiger Zugriff auf globale Ressourcen
42
Threads vs. Aktoren 12.03.2014 Race Conditions Deadlocks Threads + LocksActors
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.