我对分布式应用程序设计完全陌生,正在尝试做这个测试应用程序,以了解它们如何协同工作。因此,我将不胜感激对以下应用程序设计的任何反馈。
问题:
设计回合制多人游戏。
可能的实现:
我正在考虑以下高级实现/工作流:
Client (Mobile/Web/etc) <-> SignalR ASP MVC website <-> Azure/AWS MQ <-> Akka actors <-> DB
每个连接的客户端在 Akka 后端中都有一个相应的Player
参与者。
客户端的所有请求/响应都将通过 SignalR ASP 前端,并通过消息队列委派给相应的后端参与者。
对游戏的所有移动/状态查询都将由这些Player
参与者对后端中的相应Game
参与者进行,该参与者将处理数据库中的游戏状态更新。
问题:
这种设计有意义吗?这是 Akka 的正确用例吗?
这种设计当然是可能的(我不会将用例限定为正确或不正确),尽管 SignalR/Azure/DB 不是先验的必要组件:您也可以使用 Play 框架构建前端(例如),使用 Akka 集群和分布式 PubSub 进行消息传递,使用 Akka Persistence 存储游戏世界的状态。但是您可能选择的任何组合都应该可以正常工作。如果你对使用Akka"全力以赴"的样子感兴趣,可以看看Activator中的反应式地图教程。