2014-10-30 42 views
3

我有以下明確的算法:如何防止噴塗應用過載?

  1. 客戶端發送到我的噴塗應用的請求。
  2. Spray接收到一個請求,並且看到多個請求進來時的噴霧接收負載。
  3. 如果加載較高,則返回HTTP 503;否則它開始處理請求。

如何管理當前的噴塗負載?

另外,據我所知噴霧使用akka內部可以擴展添加額外的節點,所以我如何管理與額外的節點的負載?

回答

0

噴霧本身使用無功I/O,並且可以處理非常高的負載,可能比任何可以處理的自定義代碼「保護」更高。所以不要擔心試圖保護噴霧系統本身。如果您有複雜的處理邏輯可能需要一段時間來處理某些請求,那麼使用類似http://letitcrash.com/post/28901663062/throttling-messages-in-akka-2的東西來保護那個處理邏輯可能是有意義的。而在隊列已滿的情況下,您可以簡單地使用complete(StatusCodes.ServiceUnavailable)