1 / 42

Entspannte Nebenläufigkeit

Entspannte Nebenläufigkeit. Entwicklertag 2012. Andi Scharfstein, Ben Romberg. Quelle: Air Force Weather Agency. Quelle: Air Force Weather Agency. Blackout USA (14.08.2003). Ursache: Race Condition

fala
Download Presentation

Entspannte Nebenläufigkeit

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Entspannte Nebenläufigkeit Entwicklertag 2012 Andi Scharfstein, Ben Romberg

  2. Quelle: Air Force Weather Agency

  3. Quelle: Air Force Weather Agency

  4. Blackout USA (14.08.2003) 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 Nie wieder RaceConditions!

  6. Zur Erinnerung: Race Condition Thread 1 a = a + 1 a = 1

  7. Zur Erinnerung: Race Condition Thread 1 a = 2

  8. Zur Erinnerung: Race Condition Thread 1 a = a + 1 Thread 2 a = a + 1 a = 1

  9. Zur Erinnerung: Race Condition Thread 1 Thread 2 a = 3? a = 2?

  10. Zur Erinnerung: Race Condition Thread 1 Thread 2 a = 3? a = 2? Problem: Zugriff auf globale Ressourcen!

  11. Eine Alternative Und wenn wirnur mit lokalenRessourcenarbeiten?

  12. Nebenläufigkeit: Aktoren-Sicht Aktor 1 LokaleRessourcen LokaleRessourcen Aktor 2 Nachrichtenaustausch Ressourcenin Nachricht

  13. Aktoren-Paradigma Datenfluss findet ausschließlich in wohldefinierten, gekapselten Einheiten statt

  14. Was bringt mir das? Threads Aktoren Race Conditions

  15. Aktorentheorie Erstmals durch Carl Hewitt (1973) Motivation: Hunderte vonvernetzten Maschinen effizientparallelisieren Weiterentwicklung u.a.durch Gul Agha (1986)

  16. Was ist ein Aktor? Name(Adresse)

  17. Was ist ein Aktor? Verhalten(Code) Name(Adresse)

  18. Was ist ein Aktor? Verhalten(Code) Zustand(Daten) Name(Adresse)

  19. Was ist ein Aktor? Verhalten(Code) Mailbox / Message Queue Zustand(Daten) Name(Adresse)

  20. Was kann ein Aktor? Nachrichten verschicken

  21. Was kann ein Aktor? Nachrichten verschicken Eigenen Zustand/Verhalten ändern

  22. Was kann ein Aktor? Nachrichten verschicken Eigenen Zustand/Verhalten ändern Neue Aktoren erstellen

  23. In welcher Welt leben Aktoren? Alle Aktoren laufen immer parallel zueinander

  24. In welcher Welt leben Aktoren? Alle Aktoren laufen immer parallel zueinander Die Aktoren-Theorie macht keine Aussage über Nachrichtenverhalten

  25. In welcher Welt leben Aktoren? 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 MainActor 08.10.2014

  27. Zeit für ein Beispiel MainActor SoccerActor inthome = 0; intguest = 0; 08.10.2014

  28. Zeit für ein Beispiel MainActor SoccerActor • GoalForHome • GoalForGuest • GameOver inthome = 0; intguest = 0; 08.10.2014

  29. Akka Aktoren-Framework, unterstützt Scala und Java Gründer: Jonas Bonér (Typesafe) Bereits im Einsatz bei Amazon, AutoDesk, Credit Suisse, vmware

  30. Demo

  31. Akka – Aktoren Performance 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() • 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 • Dank Location Transparencykönnen Aktoren beliebig verteilt werden („Remoting“) • Umverteilung im lokalen Hauptspeicher • Andere Kerne der gleichen Maschine (scalingup) • Andere Maschinen im gleichen Netz (scaling out)

  34. Monitoring • 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 („errorkernelpattern“)

  35. Aktoren – Do‘s and Don‘ts KommunikationzwischenAktorensollteausschließlichüberNachrichtenstattfinden Nachrichtensolltennuraus Immutable Objects bestehen  „Nie wieder RaceConditions“

  36. Komplexeres Beispiel: Crawler für Wikipedia-API Thread-Pool mitz.B. 10 Threads  Sehr einfach zu realisieren und äußerst performant Crawler startet startet DB Cache (Batch Insert) Artikel-Details Artikel-ID startet Kategorie-ID Kategorie-Details startet

  37. Fazit “I'm not sure that more testing would have revealed that.” —Mike Unum, GE Energy

  38. Fazit “I'm not sure that more testing would have revealed that.” —Mike Unum, GE Energy Besser umdenken anstatt „moreofthe same“

  39. …dann klappt‘s auch mit dem Strom

  40. Quellen • Rajesh K. Karmani, Gul Agha: Actors (2011) • Philipp Haller, Frank Sommers: Actors in Scala (2012) • Akka Dokumentation (http://akka.io, 2012) • Ben Romberg: Intopedia: Personalisierte Beitragsempfehlungen für die Wikipedia (2010)

  41. Zur Erinnerung: Deadlock Gleichzeitiger Zugriffauf globale Ressourcen

  42. Threads vs. Aktoren Threads + Locks Actors Race Conditions Deadlocks

More Related