我只是刚刚了解了Akka和演员,并且不确定是否将它们用于Play框架应用程序中的以下用例。
我想要做的是让用户发出一个Web请求,然后需要在20-50个Yelp API调用之间(并行),获取这些响应,进行一些处理并将它们组合成一个结果。
我想知道的是,使用Akka actor是否会提高可扩展性并减少对用户的响应时间。使用actor会比仅仅在我的控制器代码中进行WS调用(使用每个的未来)给我任何好处。
我认为我无法理解在这种情况下使用actor可能会给我带来的好处,而不仅仅是一堆异步Web请求。
答案 0 :(得分:1)
演员本身只是实现和管理并行性的一种手段。您获得的收益,例如,根据您发出的异步请求激活一个参与者是监督层次结构。例如,如果其中一个请求失败,或者仅在其中一些请求失败后,主EA可以决定透明地杀死响应失败消息。您可以发出重新启动(重试这些请求)等。没有Actors你& #39; d必须自己实施所有这些监督逻辑 - 一段时间后会变得非常重复。
回答关于可扩展性和响应时间的问题:遗憾的是,它取决于"关于你的确切访问模式,但总的来说是的,因为你可以比仅仅一个异步http客户端更好地微调它们,以及更容易地实现重试。
如果您想查看如何使用Actors从许多异步请求中收集回复,请参阅#34; Waiting on multiple Akka messages"上的堆栈溢出回答。
希望这有帮助。