Das Aktorenmodell – die Basis von Akka und Akka Actors
Das Aktorenmodell wurde ursprünglich 1973 als Architekturkonzept in der Arbeit A Universal Modular ACTOR Formalism for Artificial Intelligence vorgestellt um verschiedene Verhaltensmuster, wie zum Beispiel Semaphore, Funktionen oder Prozesse, zu verallgemeinern. Basis des Modells sind die so genannten Aktoren, welche Nachrichten empfangen und versenden. Diese Nachrichten definieren die Schnittstelle zur Umwelt. Außerdem beschreiben die Nachrichten welchen Zweck ein Aktor erfüllt.
Aktoren
Ein Aktor ist somit als eine Einheit anzusehen, die genau einem Zweck dient. Wobei auf Basis der Schnittstellendefinition anhand der Nachrichten nicht definiert wird wie dieser Zweck erfüllt wird. Als Vorteil der Schnittstellendefinition mittels der Nachrichten benennen die Autoren eine Entkopplung der Schnittstellendefinition von der eigentlichen Logik, welche der Aktor zur Erfüllung seines Zwecks implementiert. Da offen ist wie ein Aktor seinen Zweck erfüllt, kann ein Aktor weitere Aktoren ansprechen, welche unter Umständen erst durch den Aktor selbst erzeugt werden. Als weitere Vorteile des Aktorenmodells führen die Autoren unter anderem eine einfache Verteilung über Systeme hinweg, die einfache Parallelisierung sowie einfache Synchronisierbarkeit an. Die Verteilung über mehrere Systeme hinweg spielt insbesondere für die horizontale Skalierbarkeit, eine entscheidende Rolle. Die einfache Synchronisierbarkeit begründen die Autoren damit, dass ein Aktor Nachrichten in der Reihenfolge abarbeitet, in der er sie erhält.
Akka Actors
Verschiedene Frameworks haben das Aktorenmodell bis heute integriert und umgesetzt. Die innFactory greift zur Verwendung von Aktoren auf das Produkt Akka Actors des Framework Akka von Lightbend zurück, welches in den Programmiersprachen Java und Scala verwendet werden kann. Akka Actors ist die Aktormodellimplementierung von Akka, welches teilweise durch die Programmiersprache Erlang inspiriert wurde. Entsprechend dem Architekturkonzept von Aktoren, wie in der Abbildung dargestellt, kommunizieren Akkas Aktoren lediglich über Nachrichten. Dabei ist von außerhalb nicht ersichtlich mittels welchem Verhalten ein Aktor die Nachrichten verarbeitet. Außerdem kann jeder Aktor über einen Postkasten verfügen in dem Nachrichten abgelegt werden können, bis der Aktor Kapazität zur Verarbeitung der Nachricht hat. Die Verarbeitung eines Aktors wird in Akka Actors als Verhalten bezeichnet. Wobei neben dem Verhalten auch der Zustand eines Aktors entscheidet wie eine Nachricht verarbeitet wird. So kann ein Aktor verschiedene Zustände annehmen, in denen Nachrichten mit jeweils unterschiedlichem Verhalten verarbeitet werden können. Akka Actors abstrahiert das Aktorenmodell soweit, dass lediglich das Verhalten der Aktoren sowie die Nachrichten programmiert werden müssen. Alles Weitere lässt sich über die Konfiguration der Aktoren steuern. Insbesondere auch wie mit Aktoren im Rahmen eines unerwarteten Fehlers umgegangen werden soll.