如何保护喷涂应用免于超载?

时间:2014-10-30 10:25:16

标签: scala akka load-balancing spray

我有以下明确的算法:

  1. 客户向我的喷涂申请发送请求。
  2. 当接到多个请求时,Spray收到请求,我看到喷雾接收负载。
  3. 如果加载量很高,则喷涂返回HTTP 503;否则它开始处理请求。
  4. 如何管理当前的喷雾负荷?

    另外,据我所知,spray在内部使用akka,可以通过添加额外的节点进行扩展,那么如何使用额外的节点来管理负载呢?

1 个答案:

答案 0 :(得分:0)

喷涂本身使用反应性I / O,可以处理非常高的负载,可能高于任何自定义代码"保护"它可以处理。所以不要担心试图保护喷雾系统本身。如果您有复杂的处理逻辑可能需要一段时间才能处理某些请求,那么使用类似http://letitcrash.com/post/28901663062/throttling-messages-in-akka-2之类的东西围绕该处理逻辑设置保护措施可能是有意义的。如果队列已满,您只需complete(StatusCodes.ServiceUnavailable)