Ich bin mir bewusst, dies ist eine sehr ungenaue Frage und könnte als ungeeignet für Stapel angesehen werden. Leider helfen kleinere Anwendungen (in Bezug auf die Anzahl der Akteure) und "Tutorial-ähnliche" mir nicht, Intuition über den Overhead des Nachrichtenversands und einen schnellen Punkt für die Granularität zwischen einem "Scala-Objekt" und einem "Corba-Objekt" zu entwickeln. .Wie schwer sind Akka Schauspieler?
Während ein Gespräch mit einem Kunden zum Beispiel sehr wahrscheinlich einen Akteur verdient, würde er in den meisten realen Anwendungsfällen konditionale/parallele/alternative Interaktionen beinhalten, die von vielen Klassen modelliert werden. Dies lässt die Wahl zwischen der Behandlung von Akteuren als Fassaden zu recht komplexen Diensten, ähnlich dem gerecht pensionierten EJB, oder ähnlich wie Smalltalk-Objekte, die Nachrichten zwischen einander abfeuern, wann immer Kommunikation asynchron implementiert werden kann.
Abgesehen von dem Overhead der Nachrichtenweitergabe selbst, wird es auch einen Overhead für das Lifecycle-Management geben, und ich bin vorsichtig mit möglichen Problemen, die durch verkettete Neustarts ganzer Teilbäume von Akteuren aufgrund von Ausnahmen oder anderen Fehlern in ihrer Wurzel verursacht werden.
Für diese Frage können wir annehmen, dass die überwiegende Mehrheit der Kommunikation innerhalb einer einzigen Maschine passiert und Netzwerküberquerung ist unbedeutend.
Danke für einige harte Zahlen. Ich habe darüber nachgedacht im Zusammenhang mit der Verarbeitung einzelner UDP/IP-Pakete, bei denen ein einzelner Akteur jedes von ihnen zur Kenntnis nehmen muss und erst nach dem Erkennen der Konversation ein Teil des Delegierens an den verantwortlichen Akteur ist, der häufig ist vor Ort erstellt. Während es möglich ist, diesen einzigen Konfliktpunkt zu entfernen, würde dies die Komplexität erheblich erhöhen und niemals vollständig auf die Clients übertragen werden, die zahlreiche, aber kleine Low-Level-Geräte sind, die nur sehr einfache Software ausführen können. – Turin