2012-10-10 56 views
0

如何爲您自己的API實施API使用配額/速率限制系統?實施大規模API使用配額系統

在實踐中,

  1. 需要進行實時和能收集使用到其他子系統
  2. 速率限制應該對DOS的支持,以
  3. 應該是非常可擴展性所有API調用將調用此係統

實施此類系統時是否存在任何現有實施或經驗共享?

回答

0

您是否有可用於您的API的數據庫?如果是這樣,只需在那裏爲每個要測量或限制的註冊帳戶存儲一個計數器。

當有人登錄時,使用像AOP這樣的技術來確保每個API調用都將通過您的調節算法運行,這應該很簡單。對於24小時限制系統的僞代碼:

read access_count from DB 
access_count++  
if access_count > limit then 
    respond with something like 429 - Too Many Requests 
else 
    store access_count in DB 
end 

上述假設你有一個走在DB夜間,並清除所有的訪問計數器回到0爲第二天的交通批處理作業。

這將取決於您的數據庫選擇的可擴展性。任何數據庫都可以處理這個問題,特別是較新的NoSQL/NewSQL。