【问题标题】:Akka architecture for distributed computation using web-app使用 web-app 进行分布式计算的 Akka 架构
【发布时间】:2018-10-20 03:16:57
【问题描述】:

我正在开发一个接受用户输入并使用集群对输入进行并行计算的网络应用程序。 Akka-cluster 用于促进这一点。

我目前正在使用 Play Framework 来管理我的网络应用程序中的 HTTP 请求。由此,我正在考虑将用户输入提交给前端 Akka 参与者,该参与者将请求转发给多个后端参与者以并行计算中间结果。然后我有另一个演员在最终将最终结果返回给用户之前聚合中间结果。每次计算可能需要几分钟到一个小时。 (我从this example得到了使用前端和后端actor的想法)

我担心的是,前端参与者必须接受每个用户的请求并给出工作的进度报告。我的第一个想法是使用“询问”模式,但我认为这不是正确的方法,因为这意味着一次只能有一个用户作为服务器。所以我目前正在考虑使用异步“告诉”来服务请求。

我的问题是:这是解决问题的正确方法吗?如果我使用“tell”,那么当作业完成时如何通知用户?另外,由于我使用的是 Play Framework,是否可以将前端 Actor 与 Play 集成以显示网页的更新?

【问题讨论】:

    标签: scala playframework architecture akka actor


    【解决方案1】:

    不确定blocking 'ask' pattern 是什么意思。如果您谈论等待参与者响应的 ?ask 方法,它基于异步且非阻塞的 Futures,因此在 Play 中使用非常安全,这确实是一种常见的方法。

    另一方面,如果响应需要很长时间,比如说超过 20 秒,我不建议这样做,以免保持许多打开的连接并改善用户体验。 Akka 还鼓励使用tell,所以我会选择服务器端推送技术(websockets?),如果可以更长的话,甚至是电子邮件。

    【讨论】:

    • 是的,我的意思是“?”方法。 Websocket 绝对是一个选择,我目前正在阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多