2

我們有三個組件(A,B和C)。 「A」使用遊戲WS將數據發送到「B」和「B」處理數據並將其發佈到「C」。當「C」處理數據緩慢時,我們有一種情況,超時發生在「B」中。但是在「B」中有大量的數據流向內部,並且一直將其發佈到「C」導致整個系統耗盡內存並最終崩潰。有沒有辦法限制「B」中WS請求的數量?搜索玩WS API,但沒有運氣。這應如何處理?請建議。播放WS max連接

回答

1

的問題是不是相關的最大連接數,而不是別的API。這個問題在分佈式系統中很常見,並且被命名爲「Fast producer and slow consumer」。還有更多的解決方案,然後我可以在這裏寫的,但短名單將是:

  • 消息隊列(用於ActiveMQ的見Slow Consumer Handling
  • 背壓(這是可以用一句話來解釋的方法;「監製發送數據只有當消費者詢問「時,BTW,Akka Streams才能以優雅的方式提供這些數據)
  • 規模(如果您希望系統速度更快,只需增加消費者的數量並在它們之間加載餘額請求或者使其成爲消費者更快)

編輯: 根據Documentation您可以設置最大值。每個主機的連接數或客戶端庫的總數,正如我上面提到的,正確的方法是改進架構,但這也可能有助於節省一天的時間。還請檢查reference.conf以獲取所有配置選項。

+0

謝謝你的迴應。該產品處於GA的最後階段,我們沒有時間對設計進行大的改動。減速只發生在數據庫事務的負面情況下。爲了安全起見,我們正計劃處理這一問題。想知道Play WS是否已經支持這個?如果是的話如何? – Prakash

+0

我編輯了我的答案,以獲得一些您想要的「保存一天」方法 –

+0

如果我沒有錯,AsyncHttpClientConfig是一個不同的實現權限。我使用WS for REST。或者通過配置參數,它也可以用於WS以及https://www.playframework.com/documentation/2.4.x/ScalaWS#Configuring-WS。 – Prakash