1
我們的產品是我們需要擴展並使其成爲冗餘的其餘api。我們的計劃是使用nginx作爲負載平衡器和代理,它將api請求轉發到三個不同的服務器,所有這些服務器都將連接到同一個MongoDB副本集。Scaling REST API - 體系結構
我們的api具有基於用戶api密鑰的速率限制。用戶將擁有多個客戶端,並且所有客戶端都將使用相同的api密鑰簽署他們的請求。
我有這方面的兩個問題:
- 多cron作業必須對數據庫執行。 我們如何確保只有一臺服務器運行cron,但是如果服務器關閉了,另一臺運行它們呢?
- 我們如何執行所有服務器上組合的速率限制。 我們如何允許一個api密鑰在所有三臺 服務器上每天獲得1000個請求?
關於第2點的問題:如果每秒有多個請求會怎麼樣?你不能去數據庫一秒鐘更新計數器10次。 – giliev
是的,但計數器更新可以是異步的(不要等待數據庫更新完成,寫入隊列並使用後臺作業處理隊列)來抵消任何性能影響。我們還可以考慮使用內存數據庫,因爲我們有其他功能可能需要更快的讀寫。 – Sumanth