Play 2.0框架(scala)中的异步结果

3

阅读Play的文档声称:

http://www.playframework.org/documentation/2.0/ScalaAsync

"由于Play 2.0的工作方式,操作代码必须尽可能快(即非阻塞)."

然后它继续展示了如何编写异步结果。有人能够详细说明为什么“操作代码必须尽可能快”吗?改变为异步结果如何影响低层次上处理请求的方式?除了抽象之外,还有什么好处吗?

1个回答

6

对于可能很长或本质上是异步的调用(例如调用其他远程的api,如twitter、db等),实际上只有客户端会等待,而不是服务器(Play 2.0 的工作方式)。

这不会影响请求本身的处理方式,然而整个操作将被执行,并且结果将被承诺以获得进一步的结果,使用 akka actors。

最后一点是关键,akka 将重复利用尽可能多的可用线程,而不是让它们保持睡眠状态。

谈到我如何使用 ASync,是在使用 Neo4J REST API 处理持久对象时,因为数据库的使用取决于网络、带宽、查询性能等,如果大部分请求都在等待,那么使用 HA 解决方案可能会很繁琐。在云环境中,这将导致你添加进程/实例,最终造成更高的成本 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接