/pattern/actor-model/

04 · ProductionRuntime ArchitectureActor-based RuntimeAgent ActorsMessage Actors

Actor Model.
Jeder Agent hat sein eigenes Postfach, seinen eigenen Zustand, seinen eigenen Supervisor.

Agenten oder Komponenten laufen als unabhängige Actors: jeder besitzt seinen privaten Zustand, verarbeitet jeweils eine Nachricht aus seinem Postfach und kann weitere Actors erzeugen — so gibt es keine Shared-Memory-Konkurrenz und ein Absturz bleibt auf einen einzelnen Actor begrenzt.

In der PraxisEin Hochdurchsatz-Dokumentenverarbeitungssystem weist jede hochgeladene Datei einem unabhängigen Actor zu, sodass ein Absturz im verarbeitenden Actor einer Datei die anderen parallel laufenden niemals beeinträchtigt.

Wann man dazu greift

  • Nebenläufigkeit und Isolation kritisch sind.
  • Agenten ihren eigenen internen Zustand besitzen.
  • Skalierung über unabhängige Einheiten erfolgen soll.

Wann es nach hinten losgeht

  • Ein einfacher synchroner Workflow genügt.
  • Das Nachrichtenmodell unnötige Komplexität erzeugt.
  • Globale Transaktionen zentral sind.

Die Abwägung

Starke Isolation und Skalierbarkeit werden auf Kosten komplexerer Nachrichten- und Fehlersemantik gewonnen.

Die Wirkung

Was es tatsächlich tut.

Isolierte Actors tauschen Nachrichten aus, um sich abzustimmen.

messageactoractor
Fallstricke

Zwei Wege, wie dieses Pattern Probleme verursachen kann.

Verlorene Nachrichten verschwinden spurlos

Ein Actor stürzt zwischen Empfang und Bestätigung ab. Die Nachricht verschwindet; der Sender glaubt, sie wurde verarbeitet; das System verliert lautlos Arbeit.

Lösung · Mindestens-einmal-Zustellung mit idempotenten Handlern verwenden oder das Postfach vor der Verarbeitung persistieren. Nachrichtenverlust zu einem sichtbaren Fehler machen, nicht zu einem stillen.

Das Postfach eines langsamen Actors wächst unbegrenzt

Ein Actor verbraucht Nachrichten langsamer als sie eintreffen. Sein Postfach schwillt an, bis der Speicher erschöpft ist, und die Backlog-Latenz kaskadiert zu allen, die auf seine Antworten warten.

Lösung · Postfächer begrenzen und bei Überlauf Backpressure oder Load-Shedding anwenden; die Warteschlangentiefe pro Actor überwachen und skalieren oder abwerfen, bevor daraus ein Ausfall wird.

Framework-Unterstützung

Wo Actor Model nativ ist.

Microsoft Agent FrameworkActor-RuntimeNativ
AutoGen / AG2Actor-AgentenNativ
AWS StrandsAgenten-ActorsNativ

Suche

Patterns, Frameworks und Seiten durchsuchen.