我还没有遇到很多将 Play 与 akka-cluster 后端和像 Cassandra 这样的 NoSql 存储相结合的例子,所以我在实施这样一个系统时有些不确定性。
为了具体起见,我没有抽象地描述设置,而是提出了一个示例,它代表了 play 和 akka 可以大放异彩的一整类问题:
考虑:一个数据库支持的(让我们使用 Cassandra 集群)公路旅行应用程序,当您旅行时,它会推荐兴趣点。用户有帐户、输入设置和一些偏好。有一个旅行仪表板视图,包括旅行历史等。计划是使用 Play 和 Angular 的 web 应用程序,大多数 web 应用程序是从数据库中提取用户数据和 POI 数据并模板化、更新视图的简单案例。然而,计算和排名该区域 POI 的算法使 akka-cluster 和 actor 模型成为一个引人注目的解决方案。它需要用户数据(每天更新)和 POI 数据(按位置更新)作为输入,然后根据该数据运行算法。
总结: - 一个播放前端,提供请求,并调用由数据库支持的服务来满足请求(获取用户数据、模板等) - 一个 akka 集群后端,它从前端(或客户端)获取请求以排名积分基于用户数据(即偏好、年龄、历史)对该区域感兴趣的区域。这也需要通过参与者访问数据库。
讨论的一部分可能必然包括对所选数据存储最优化的内容,但这里是高级解决方案:
将所有数据访问职责委托给 akka 集群,Play 仅将“获取一些数据”请求以及“基于数据 x、y 和 z 进行一些计算”请求转发到后端。这消除了多租户混淆
将所有基本请求保留在播放端用数据存储数据填充模板,并将集群仅用于 cpu 密集型计算。播放前端转发计算请求。这意味着两者都可以访问 cassandra 集群(可怕吗?)
Play 应用程序只做计算,Akka-http 为客户端公开了计算 Api(角度,两个微服务都可以访问同一个 cassandra 集群
使用 Akka-http 和 Angular 消除游戏并使其成为休息服务
对不起,如果这是一个太高级的问题。有什么想法吗?