【发布时间】:2011-09-09 15:45:36
【问题描述】:
我有一个 Web 服务,它正在执行许多数据库查询(对 MongoDB),然后对这些数据库查询返回的记录进行大量处理。每个 Web 请求需要运行大约 15-45 个这样的请求,这会导致页面响应时间不可接受,因为每个查询 + 处理大约需要 20 毫秒。缓存将不起作用,因为缓存未命中率会很高,并且数据需要尽可能新鲜。
我曾计划使用 Scala + Akka 和 actor 来并行化执行和处理查询的类,但我知道不鼓励在 servlet 容器内创建线程。在 Scala 中的 Web 请求中进行线程/并行化的推荐方法是什么?
【问题讨论】:
-
我没有回答你的问题,因为如果你不能有多个线程,我不知道你是如何并行化任何东西的。我想说的是,使用 Akka Actor 可能不是一个好主意。 Akka Futures 将是去这里的方式。
-
@Derek 我想这是我的问题,可以在 Scala + Akka 的 Web 请求中的代码中使用 Actors 吗?我想拥有多个线程,将执行查询和处理的类包装在一个 Actor 中。我正在考虑 Futures,但也想知道我是否可以使用 Actors。
-
我已经使用 Mist 成功编写了高度可靠和可扩展的应用程序 - Akka 中的 HTTP 插件,它在您的业务逻辑和 Web 容器之间放置了一个 Actor shim。所以我不明白为什么它有任何问题。
标签: web-services scala parallel-processing akka