Das Aktormodell – Paradigmenwechsel zum konventionellen Multithreading

Die Komplexität und die Anforderungen an moderne Datenverarbeitungssysteme nimmt stetig zu. Mit dieser Entwicklung stossen traditionelle Lösungsansätze zunehmend an ihre Grenzen. Das Aktormodell bietet durch die Verwendung von unabhängigen, kleinen Einheiten – den Aktoren, eine elegante Lösung, um sich diesen Herausforderungen zu stellen.

Das Aktormodell: Ein altes Konzept mit moderner Umsetzung

Das Aktormodell wurde 1970 entwickelt, um Skalierbarkeit, Resilienz und Modularisierung in asynchronen und parallelen Umgebungen zu verbessern. Das Modell basiert darauf, dass jede funktionale Komponente einen unabhängigen Aktor darstellt. Aktoren arbeiten eigenständig und kommunizieren ausschliesslich über Nachrichtenaustausch (Message-Passing). Sie besitzen isolierte Zustände, die nur durch sie selbst oder indirekt über Nachrichten anderer Aktoren verändert werden können. Jeder Aktor hat eine eigene Mailbox, in der Nachrichten in der Reihenfolge ihres Eingangs (First in, First out) empfangen und verarbeitet werden.

Nachrichtenaustausch im Aktormodell / Quelle
Vorteile
  • Keine Synchronisation notwendig: Aktoren greifen nicht auf gemeinsame Ressourcen zu und haben isolierte Zustände. Dadurch sind komplexe Synchronisationsmechanismen überflüssig
  • Asynchron: Der Nachrichtenaustausch zwischen Aktoren erfolgt asynchron. Aus diesem Grund blockieren Aktoren weder sich selbst noch andere Aktoren.
  • Fehlertoleranz und Resilienz: Fehler eines Aktors wirken sich bei nachhaltigem Design der Aktor-Logik minimal auf andere Aktoren aus. Frameworks bieten oft die Möglichkeit, Strategien zu definieren, die vorgeben, wie sich das Aktor System bei Ausfällen von Aktoren verhalten soll.
  • Skalierbarkeit: Aktoren eignen sich besonders für den Einsatz in verteilten Systemen. Durch ihre Isolation und Kommunikation ausschliesslich über Nachrichten können sie über mehrere Server verteilt und dadurch horizontal skaliert werden.
  • Modularisierung: Alles ist ein Aktor. Dieses Mindset fördert die Modularisierung von Services und Komponenten und erhöht die Testbarkeit. (Anmerkung: Ein zu granulares Aktor-Design kann die Leistung eines Aktor Systems beeinträchtigen)
Herausforderungen
  • Kein State-Sharing: Im Aktormodell gibt es keinen gemeinsamen verfügbaren Zustand. Stattdessen können die Zustände zwischen den Aktoren über Nachrichten ausgetauscht werden. Allerdings führt dies zu einem zusätzlichen Mechanismus und kann als Anti-Pattern in diesem Modell betrachtet werden.
  • Nachrichtenübermittlung: Message-Passing-Systeme bringen Komplexität in die Verwaltung von Nachrichten. Die Nachrichtenprotokolle müssen den Anforderungen gerecht werden.
  • Debugging: Wie viele andere asynchrone Systeme ist auch das Aktormodell schwer zu debuggen.
  • Lernkurve: Das Aktormodell erfordert ein Umdenken seitens der Entwickler. Dies kann insbesondere in der Design-Phase der Aktoren Logik zu längeren Entwicklungszeiten führen.

Fazit

Das Aktormodell bietet eine Lösung für die steigenden Anforderungen moderner Datenverarbeitungssysteme. Es nutzt unabhängige Einheiten (Aktoren) für verbesserte Skalierbarkeit, Resilienz und Modularität in asynchronen Umgebungen. Trotz Vorteilen wie reduzierter Synchronisierungsbedarf und Fehlertoleranz, birgt es Herausforderungen wie komplexes State-Management und erhöhte Lernkurve. Diesen Herausforderungen muss man sich beim Einsatz vom Aktormodell stellen.

Weiterführende Links:

Dieser BlogBeitrag wurde mit Unterstützung des Sprachmodells ChatGPT erstellt.

Beitrag teilen

Luca Barletta

bloggt aus dem Unterricht des CAS Modern Software Engineering & Development

Alle Beiträge ansehen von Luca Barletta →

Schreibe einen Kommentar