Akka Flashcards
Actor Model
Wie interagiert ein Actor Model?
Nur über asynchrone Nachrichten
Welche Vorteile bieten Actors gegenüber Futures?
- Simple Abstraktion
- Asynchron und nicht blockierend
- Geringer Speicherverbrauch
- Fehlertolerant
- Ortstransparent
Wie funktioniert ein Actor?
- Erstellt System von Threads die asynchron miteinander kommunizieren
- Laufen parallel und verhindern somit blockieren
- Arbeiten mit asynchronen Nachrichten (Message Driven)
Welchen Nachteil haben Actors?
- Sind untyped, also nicht fest deklariert
- Compiler kann Probleem im voraus nicht erkennen
Wie lauten die vier Prinzipien des React Manifest?
- Message Driven
- Elastic
- Resilient
- Responsive
Was bedeutet Message Driven?
- Loose coupling (statt tight coupling)
- Isolation
- Ortstransparenz
- Nicht blockierende Kommunikation
- Monitoring von Nachrichten
Was bedeutet Elastic?
- Stabilität unter verschiedenen Auslastungen
- Ressourcen skalieren dynamisch anhand der aktuellen Anforderungen
Vorraussetzungen:
- Kein zentrales Bottleneck
- Möglichkeit Komponenten aufzuteilen zu replizieren
Was bedeutet Resilient?
- Systeme laufen weiter bei Fehler
- Client muss sich nicht um Fehlerbehandlung kümmern
Umsetzung:
- Containment: Betrifft wenn, nur eine Komponente
- isolation: Komponenten sind voneinander isoliert
- Delegation: Weitergeben von Aufgabe an andere Komponenten
- Replication: Replizieren der Komponente, falls nötig
Was bedeutet Responsive?
- System reagiert in angemessener Zeit
- Schnelle Reaktionszeiten
- Qualität des Services bleibt stabil
- Frühe Erkennung und schnelle Behandlung von Problemen
Implementierung von Actor in Scala
Actor anlegen in Actor System
import akka.actor.ActorRef; import akka.actor.ActorSystem; // ActorSystem is a heavy object: create only one per application final ActorSystem system = ActorSystem.create("MySystem"); final ActorRef myActor = system.actorOf(Props.create(MyUntypedActor.class), "myactor");
Wie funktioniert das Messaging bei Actors?
- Actor nur per Nachricht erreichbar
- Actors laufen voll nebenläufig
- Nachrichten werden sequentiell empfangen (single threaded)
- Nachrichten werden atomar und vollständig ausgeführt, bevor die nächste Nachricht verabeitet wird
WEr ist der Guardian Actor in einem Actor System?
Der sogenannte user
Woher kennt ein Actor die Referenz zu einem Sender?
- Er erhält sie (den ActorPath) per Laufzeit in der ActorRef
- Der ActorPath weisst auf einen (möglicherweise vorhandenen) Actor
ActorPath (lokal): akka://Main/user/parent/child/grandchild
ActorPath (remote): akka.tcp//Main@10.1.2.3:7777/user/parent/child/grandchild