播放 Async 与 Akka Actor
Play Async Vs Akka Actor
我是 Play 框架和 Akka 工具包的新手。
我们正在尝试使用 Play 在 Web 客户端和微服务之间构建一个编排层。
所以基本上对于来自客户端的每个请求,Play 必须执行 WS 调用和 return JSON(以及缓存它)。
现在在调用 WS 时,我们可以使用 Play Async API 或使用 Akka actor。
无论如何,这些选项中的一个是否胜过另一个?
与直接使用 Play Async API 相比,对于什么时候应该冒险使用 Akka actor 和 Play 有什么建议吗?
在 Akka 中,作为参与者的主要概念,它是一个具有内存来保持状态的对象。对该状态的顺序操作由系统序列化并且不能干扰。在 Java8 promise/futures 中,主要概念是异步方法调用,如果不同的方法属于同一个对象,则用户有责任提供串行访问 - 这并不容易并且容易出错。
然后,使用 futures 意味着为每个单独的操作创建一个 Future
对象,如果操作是 fine-grained,则可以将其视为开销。
另一方面,CompletableFuture
可以像 allOf()
那样将多个事件组合成一个,这在 Akka 中没有直接的类似物。
我是 Play 框架和 Akka 工具包的新手。
我们正在尝试使用 Play 在 Web 客户端和微服务之间构建一个编排层。
所以基本上对于来自客户端的每个请求,Play 必须执行 WS 调用和 return JSON(以及缓存它)。
现在在调用 WS 时,我们可以使用 Play Async API 或使用 Akka actor。 无论如何,这些选项中的一个是否胜过另一个?
与直接使用 Play Async API 相比,对于什么时候应该冒险使用 Akka actor 和 Play 有什么建议吗?
在 Akka 中,作为参与者的主要概念,它是一个具有内存来保持状态的对象。对该状态的顺序操作由系统序列化并且不能干扰。在 Java8 promise/futures 中,主要概念是异步方法调用,如果不同的方法属于同一个对象,则用户有责任提供串行访问 - 这并不容易并且容易出错。
然后,使用 futures 意味着为每个单独的操作创建一个 Future
对象,如果操作是 fine-grained,则可以将其视为开销。
另一方面,CompletableFuture
可以像 allOf()
那样将多个事件组合成一个,这在 Akka 中没有直接的类似物。