ฉันอยู่ระหว่างการเริ่มโปรเจ็กต์ใหม่ (ที่ใช้ Java) ฉันต้องการสร้างมันเป็นสถาปัตยกรรมแบบแยกส่วนกระจายและยืดหยุ่นได้
ดังนั้นฉันจึงต้องการให้กระบวนการทางธุรกิจสื่อสารกันเองสามารถทำงานร่วมกันได้ แต่ก็เป็นอิสระ
ตอนนี้ฉันกำลังดูสองกรอบที่นอกเหนือจากความแตกต่างด้านอายุแล้วยังแสดงมุมมองที่แตกต่างกัน 2 มุมมอง:
- อักคา ( http://akka.io )
- เครื่องปฏิกรณ์ ( https://github.com/reactor/reactor )
สิ่งที่ฉันควรพิจารณาเมื่อเลือกหนึ่งในกรอบข้างต้น
เท่าที่ฉันเข้าใจจนถึงตอนนี้ Akka ยังคงอยู่คู่กัน (ในลักษณะที่ฉันต้อง 'เลือก' นักแสดงที่ฉันต้องการส่งข้อความถึง) แต่มีความยืดหยุ่นมาก ในขณะที่ Reactor หลวม (ตามการโพสต์เหตุการณ์)
ใครช่วยให้ฉันเข้าใจวิธีการตัดสินใจที่ถูกต้อง?
อัปเดต
หลังจากตรวจสอบ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
- เครื่องปฏิกรณ์ระยะเริ่มต้นผูกพันกับฤดูใบไม้ผลิ
การตีความของฉันถูกต้องหรือไม่? แต่แนวคิดของนักแสดงใน Akka กับผู้บริโภคในเครื่องปฏิกรณ์แตกต่างกันอย่างไร?