Я нахожусь в процессе запуска нового проекта (на основе java). Мне нужно построить его как модульную, распределенную и отказоустойчивую архитектуру.
Поэтому я хотел бы, чтобы бизнес-процессы взаимодействовали между собой, были совместимы, но при этом независимы.
Я сейчас смотрю на две структуры, которые, помимо разницы в возрасте, выражают 2 разных взгляда:
- Акка ( http://akka.io )
- Реактор ( https://github.com/reactor/reactor )
Что мне следует учитывать при выборе одного из вышеперечисленных фреймворков?
Насколько я понимаю до сих пор, Akka все еще каким-то образом связан (таким образом, что я должен «выбирать» актера, которому я хочу отправить сообщения), но очень устойчив. Пока Reactor свободен (судя по публикации событий).
Может ли кто-нибудь помочь мне понять, как принять правильное решение?
ОБНОВИТЬ
После более тщательного изучения шины событий Akka, я считаю, что в некотором смысле функции, реализованные в Reactor , уже включены в Akka.
Например, подписка и публикация событий, задокументированные на https://github.com/reactor/reactor#events-selectors-and-consumers , могут быть выражены в Akka следующим образом:
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");
Поэтому сейчас мне кажется, что основные различия между ними следующие:
- Акка, более зрелый, привязанный к Typesafe
- Реактор, ранний этап, привязан к весне
Моя интерпретация верна? Но в чем концептуально разница между Актером в Akka и Потребителем в Reactor ?