作为和 RESTful 服务

Akka and RESTful Services

在 SO 上,有一个题为 "Good use case for Akka" 的问题得到了大量投票(尽管 "closed"),我正在寻找进一步的解决方案。

虽然不是公认的答案,但 Akka 自己的 Viktor Klang 提出了一个 heavily-upvoted answer 的观点,他指出 RESTful Web 服务是基于 actor 的框架的一个很好的用例。

但这似乎与 Akka 最基本的主要内容直接冲突:Akka 用于异步系统,而 REST 服务需要同步,并且通常期望在 200 毫秒内产生结果(例如,我不应该一个简单的 GET 到 return 对我来说 JSON 不必等待 6 秒)。

所以我问:如果 Akka 是隐式异步和非阻塞的,那么它如何成为 REST 服务的理想选择,或者这只是自我营销炒作?

为什么你认为异步意味着慢? :)

当然,由于 HTTP 协议的性质,从客户端的角度来看,HTTP 调用将是同步的。但是内部Akka会尽快使用它的异步能力来处理请求。

spray.io 是一个标准的 Akka HTTP 层,很快就会被 Akka HTTP 模块取代(基本上是 Spray 2.0)。它非常轻巧且速度超快。

this 是关于如何集成同步 HTTP 和异步 Akka Actors 的示例。如您所见,它会创建 Future 并在完成后将结果发回。

更高级的示例:http://techblog.net-a-porter.com/2013/12/ask-tell-and-per-request-actors/