簡體   English   中英

限制對RESTful服務的呼叫次數

[英]Limit number of calls to RESTful service

我們在多個節點上部署了RESTful服務,並且我們希望限制每個客戶端每分鍾向每個客戶端分配不同配額的呼叫數量。 我們的堆棧:Jboss應用服務器,Java / Spring RESTful服務。

什么雲是實現此目標的可能技術?

有時候,我讀過一篇很好的文章,強調了相同的主題 這個想法是將這種邏輯移到負載均衡代理中,這里有一些很好的理由:

  1. 消除了技術債務-如果您將速率限制邏輯與應用程序邏輯結合在一起,那么您就不需要了技術債務。 您可以解除和轉移債務

  2. 效率提高-您正在向上游轉移邏輯,這意味着您所有的計算資源都專用於計算。 您可以更好地預測

  3. 安全性-眾所周知,應用層(請求-響應)攻擊正在增加,包括拒絕服務。 通過利用具有更大連接能力的上游代理,您可以阻止這些攻擊,因為它們永遠不會靠近實際服務器。

如果訪問API的唯一方法是通過您管理的UI客戶端,則可以在客戶端代碼上添加檢查(對於Web應用程序為javascript),僅在該用戶未超過限制時進行調用。 否則,由於用戶始終可以訪問您的API,並且在服務器級別上唯一可以做的事情就是檢查是否發送錯誤或有效結果作為API響應的一部分,因此沒有其他方法。

為了限制堆棧,這意味着您至少需要基於某些特定的客戶端標識來保持狀態。 這可能需要您維護一個中央計數器,例如db(cassandra),該計數器可以讓您每分鍾查詢當前請求計數,然后在Java過濾器中可以根據需要限制請求計數。

或者,如果您可以跟蹤客戶端的會話,則可以跟蹤然后使用粘性會話,從而強制客戶端在客戶端會話的持續時間內使用特定的節點,因此您可以在Java過濾器中簡單地跟蹤每個客戶端的請求數,然后發送503代碼或其他更相關的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM