使用Spray限制并发请求

时间:2014-01-23 21:50:16

标签: scala akka spray

我正在使用spray-routing构建一个简单的HTTP服务器。此服务器调用许多需要一段时间响应的服务(秒)。我们希望在并发请求数量变大时拒绝请求。否则,大量的并发请求会使系统陷入无人问津的境地。

有许多层可以解决这个问题。我不确定如何准确地做任何一个,或者哪个是最好的。

  1. 我可以为具有有界队列和拒绝政策的喷涂路由提供执行上下文。

  2. 我可以限制我的喷雾http服务器的邮箱大小,因为它也是一个演员。

  3. 我可以在application.conf中配置一个直接解决此问题的设置。

  4. 实施此类政策的简单有效方法是什么?

1 个答案:

答案 0 :(得分:1)

我不知道哪种解决方案最适合您的情况(我会创建自己的执行上下文)但我相信您可能应该重新考虑如何处理您的请求。

您对自己的要求做了什么?你试着直接在Spray中处理它们吗?在期货的帮助下?

我建议创建其他actor,将请求上下文传递给他们,然后决定做什么。如果你想处理它或者你应该立即把它放下来。这将为您提供更大的灵活性。您可以附加其他服务器,现在支持在Akka中进行群集,而无需更改喷涂部件,从而可以轻松添加更多处理能力。

我知道这不能回答你的问题,但我认为akka旨在以不同的方式处理这类问题,切断邮箱或其他任何东西都不是正确的选择。