Wie können OSGi und Akka voneinander profitieren? Wie ist das aufgebaut?

Follow-up meiner eherunlogische Frageund fragte nach OSGioder Akka, mir wurde geraten, dass die beiden zusammen verwendet werden können und dass sie jeweils ein anderes Problem lösen. Ich könnte OSGi verwenden, um Modularität und Aktualisierbarkeit bereitzustellen, und Akka, um Skalierbarkeit und Leistung bereitzustellen. Da nicht viel mit dem Kombinieren von OSGi und Akka experimentiert wurde, habe ich noch ein paar Fragen.

Wie können OSGi und Akka zusammen verwendet werden und voneinander profitieren? Wie ist das aufgebaut? Befinden sich alle Ihre Schauspieler in einem OSGi-Bundle, erhalten sie jeweils ein separates Bundle, gibt es eine hybride Lösung oder gibt es nicht wirklich einen „richtigen“ Weg, dies zu tun?

Ich würde die großen Komponenten in verschiedene OSGi-Bundles aufteilen. Jedes Bundle besteht aus verschiedenen Akka-Schauspielern. Jedes Bündel kann dann in Abhängigkeit von der Last auf diesem Bündel getrennt voneinander skaliert werden. In jedem Bundle kann ein transparenter Lastausgleich verwendet werden, um die Last auf verschiedene Akteure zu verteilen. Wäre dies eine korrekte und realistische Vorgehensweise?

BEARBEITEN

Gedanken nach der Umsetzung: Sie ergänzen sich deutlich! Ich habe meine Anwendung in große Blöcke aufgeteilt, die ich dann mit Spring in Teile der Anwendung eingefügt habe. In den großen Blöcken habe ich ausschließlich Akka benutzt. Die Tore zu den Blöcken sind Typed Actors. Um mein System vollständig asynchron zu machen, musste ich einige zusätzliche Funktionen implementieren. Es bleiben also keine blockierenden Aufrufe übrig. Alle Schnittstellenmethoden sollten den void-Typ zurückgeben. Konnte keinen anderen Weg finden. Sie können dann eine Nachricht über die Schnittstelle als Attribut weitergeben, das für die gesamte Dauer der Anforderung übertragen wird und zu Beginn der Anforderung in einem "Responder" registriert wird. Am Ende wird ein DeferredResult-Objekt erfolgreich zurückgegeben oder ein Fehler / Timeout wird zurückgegeben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage