【问题标题】:Play Async Vs Akka Actor播放 Async Vs Akka Actor
【发布时间】:2017-05-27 23:01:32
【问题描述】:

我是 Play 框架和 Akka Toolkit 的新手。

我们正在尝试使用 Play 在 Web 客户端和微服务之间构建一个编排层。
所以基本上对于来自客户端的每个请求,Play 都必须进行 WS 调用并返回 JSON(以及缓存它)。

现在在进行 WS 调用时,我们可以使用 Play Async API 或使用 Akka actor。 无论如何,这些选项中的一个是否超过另一个?

与直接使用 Play Async API 相比,在何时冒险将 Akka Actor 与 Play 一起使用是否有任何建议?

【问题讨论】:

  • Play Async API 到底是什么?请提供网络参考。 Play 中使用了不同的异步解决方案。
  • playframework.com/documentation/2.5.x/JavaAsync "Java 8 提供了一个通用的 Promise API,称为 CompletionStage。CompletionStage 最终将使用 Result 类型的值进行兑换。通过使用 CompletionStage 而不是普通的 Result , 我们可以在不阻塞任何东西的情况下快速从我们的操作中返回。一旦兑现承诺,Play 将立即提供结果。Web 客户端将在等待响应时被阻塞,但服务器上不会阻塞任何内容,并且服务器资源可用于为其他客户端提供服务。”

标签: scala asynchronous playframework akka actor


【解决方案1】:

在 Akka 中,主要概念是 Actor,它是一个具有内存来保持状态的对象。对该状态的顺序操作由系统序列化,不会干扰。在 Java8 Promise/Futures 中,主要概念是异步方法调用,如果不同的方法属于同一个对象,则提供串行访问是用户的责任——这并不容易,而且容易出错。 然后,使用期货意味着为每个单独的操作创建一个Future 对象,如果操作是细粒度的,这可以被视为开销。 另一方面,CompletableFuture 具有将多个事件合并为一个的方法,例如 allOf(),这在 Akka 中没有直接的类似物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多