【发布时间】:2014-12-23 20:02:48
【问题描述】:
我还没有遇到很多将 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 密集型计算。 play frontend 转发计算请求。这意味着两者都可以访问 cassandra 集群(可怕吗?)
Play 应用程序只做计算,Akka-http 为客户端公开了计算 Api(角度,两个微服务都可以访问同一个 cassandra 集群
使用 Akka-http 和 angular 消除游戏并使其成为休息服务
抱歉,这个问题太高级了。有什么想法吗?
【问题讨论】:
标签: architecture playframework typesafe akka-cluster