2013-02-20 20 views
2

作爲我們服務的一部分,我們爲我們的平臺上構建公開可用的API,它可以讓用戶執行簡單的任務(主要用於自動化目的)(如評論,關閉完成的任務,並創造新的)。消毒面向公衆的API的最佳實踐?

API基於HTTPS,需要以您的登錄名和密碼的形式進行調用/登錄,才能接收令牌(可在您的配置文件中使其失效)。如果它很重要,我們使用金字塔,postgresql和nginx。

這是我這樣的第一個項目,我想知道我應該怎麼吃我們所有的轉移或處理能力(其中的一些API函數是相當重)固定這個事情。 我想在某人在其腳本(使用我們的API)發生小錯誤的示例的上下文中思考它,並且它會在同一任務下每秒發佈註釋(或列出此任務的所有註釋)。 2天。

如果我強制所有通過緩存讀取(例如,接下來的10秒有效),所以它會打我們的memcached服務器,而不是postgres基地 - 這是否足以卸載此問題(所以其他用戶不會受到影響)還是隻是愚蠢?

如果我會檢查某種定時器,使另一個寫(寫操作之間5秒)之前等待至少5秒 - 那會是好的否則我就殺了我們與定時檢查服務器?

我想這更是一個問題的最佳做法在消毒公共API,因此它不會咬它的創造者。你怎麼做呢?

回答

2

你要尋找的是rate limiting。如果沒有關於如何編寫API的更多知識,我不能給你關於如何實現它的具體建議,但最好的辦法是對API消費者進行評級,以便它們不會對服務的其他用戶造成不利影響。

+1

謝謝,這個詞是我所需要的關鍵 - 我GOOGLE了它錯了。現在我發現了一些關於Twitter API速率限制的文章,這聽起來很合理。 – niktto 2013-02-20 23:10:03