Ich bin gerade dabei, ein neues Projekt zu starten (Java-basiert). Ich muss es als modulare, verteilte und belastbare Architektur aufbauen.Akka oder Reaktor
Daher möchte ich die Geschäftsprozesse untereinander kommunizieren lassen, interoperabel sein, aber auch unabhängig.
Ich suche jetzt an zwei Gerüsten, dass sie neben ihren Altersunterschied, zum Ausdruck 2 verschiedene Ansichten:
- Akka (http://akka.io)
- Reactor (https://github.com/reactor/reactor)
Was ich sollte bei der Wahl eines der oben genannten Frameworks berücksichtigen?
Soweit ich bisher verstanden habe, ist Akka immer noch irgendwie gekoppelt (auf eine Art, dass ich den Akteur wählen muss, "dem ich die Nachrichten senden möchte"), aber sehr belastbar. Während der Reaktor lose ist (basierend auf der Veröffentlichung von Ereignissen).
Kann mir jemand helfen zu verstehen, wie man eine richtige Entscheidung trifft?
UPDATE
Nachdem die Event Bus von Akka besser bewerten, ich glaube, in gewisser Weise sind die features expressed by Reactor bereits in Akka enthalten.
final ActorSystem system = ActorSystem.create("system");
final ActorRef actor = system.actorOf(new Props(
new UntypedActorFactory() {
@Override
public Actor create() throws Exception {
return new UntypedActor() {
final LoggingAdapter log = Logging.getLogger(
getContext().system(), this);
@Override
public void onReceive(Object message)
throws Exception {
if (message instanceof String)
log.info("Received String message: {}",
message);
else
unhandled(message);
}
};
}
}), "actor");
system.eventStream().subscribe(actor, String.class);
system.eventStream().publish("testing 1 2 3");
Daher scheint es mir jetzt, dass die großen Unterschiede zwischen den beiden sind:
- Akka, reife, gebunden
- Reactor, frühzeitig zu typsicher,
Zum Beispiel das Abonnement und Event-Publishing, auf https://github.com/reactor/reactor#events-selectors-and-consumers dokumentiert, kann wie folgt in Akka ausgedrückt werden
Ist meine Interpretation korrekt? Aber Was ist konzeptionell der Unterschied zwischen dem Schauspieler in Akka und dem Verbraucher in Reaktor?
Akka nicht von Scala verwendet werden gebunden ist, in der Tat eine Mehrheit aus Java verwenden. –
Hallo Viktor, ja, ich benutze auch Akka mit Java. Was ich meinte, ist, dass Akka Teil des Typesafe-Ökosystems ist, während Reactor to Spring. Bei der Entwicklung in Scala wäre Akka wahrscheinlich die am besten geeignete Wahl. –
Viktor, ich glaube, wir können sagen, dass Akka das Reactor-Muster implementiert (mit Event Bus, Dispatcher und Mailboxes), habe ich Recht? –