Я запускаю новый проект (java-based). Мне нужно построить его как модульную, распределенную и отказоустойчивую архитектуру.
Поэтому я хотел бы, чтобы бизнес-процессы связывались между собой, были интероперабельными, но также независимыми.
Я смотрю прямо сейчас на две рамки, которые, помимо их разницы в возрасте, выражают два разных мнения:
- Akka (http://akka.io)
- Реактор (https://github.com/reactor/reactor)
Что я должен учитывать при выборе одной из вышеперечисленных структур?
Насколько я понимаю до сих пор, Akka все еще каким-то образом сочетается (таким образом, что мне нужно "выбрать" актера, к которому я хочу отправить сообщения), но очень устойчив. Пока реактор свободен (как основывается на публикации событий).
Может кто-нибудь помочь мне понять, как принять правильное решение?
UPDATE
После более качественного обзора Event Bus от 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");
Поэтому мне кажется, что основные различия между ними:
- Akka, более зрелая, привязанная к Typesafe
- Реактор, ранний этап, связанный с Spring
Является ли моя интерпретация правильной? Но , что концептуально отличается между Актером в Акке и Потребителем в Реакторе?