[發(fā)明專利]一種控制API單位時間內(nèi)調(diào)用頻次的系統(tǒng)及方法在審
| 申請?zhí)枺?/td> | 201711098349.3 | 申請日: | 2017-11-09 |
| 公開(公告)號: | CN107885605A | 公開(公告)日: | 2018-04-06 |
| 發(fā)明(設(shè)計)人: | 黃啟慶;梁圣奇;王靜;袁騫騫 | 申請(專利權(quán))人: | 鄭州云海信息技術(shù)有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 濟南舜源專利事務(wù)所有限公司37205 | 代理人: | 劉雪萍 |
| 地址: | 450000 河南省鄭州市*** | 國省代碼: | 河南;41 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 控制 api 單位 時間內(nèi) 調(diào)用 頻次 系統(tǒng) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明屬于API接口訪問領(lǐng)域,具體涉及一種控制API單位時間內(nèi)調(diào)用頻次的系統(tǒng)及方法。
背景技術(shù)
單位時間內(nèi)訪問頻次,單位時間即每分鐘/每小時/每天,訪問頻次是調(diào)用頻次,即調(diào)用次數(shù)。
隊列,隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。
API,Application Programming Interface的簡稱,應(yīng)用程序編程接口。
在開發(fā)接口服務(wù)器的過程中,為了防止客戶端對于接口的濫用,保護服務(wù)器的資源,通常來說我們會對于服務(wù)器上的各種API接口進行調(diào)用次數(shù)的限制。比如對于某個用戶,他在一個時間段(interval)內(nèi),比如1分鐘,調(diào)用服務(wù)器接口的次數(shù)不能夠大于一個上限(limit),比如說100 次,如果用戶調(diào)用接口的次數(shù)超過上限的話,就直接拒絕用戶的請求,返回錯誤信息。
API調(diào)用頻次控制,目前多采用按單位時間分隔的方式,如:某個API限制每分鐘最大可調(diào)用次數(shù)為10,則每次攔截到調(diào)用請求時,將當前分鐘的調(diào)用次數(shù)加一,下次再攔截到該API的調(diào)用請求時,如果兩次請求時間屬于同一分鐘,則將該分鐘的調(diào)用次數(shù)加一;如果不屬于同一分鐘(即使兩次調(diào)用時間間隔僅1秒),也會記入下一分鐘的調(diào)用次數(shù)。
上述統(tǒng)計方式是不準確的,如10點49分50秒至10點49分59秒,該API被調(diào)用了10次;10點50分0秒至10點50分10秒,該API又被調(diào)用了10次,這樣實際上該API20秒內(nèi)被調(diào)用了20次,超出了每分鐘最大可調(diào)用次數(shù)10次。
此為現(xiàn)有技術(shù)的不足,因此,針對現(xiàn)有技術(shù)中的上述缺陷,提供一種控制API單位時間內(nèi)調(diào)用頻次的系統(tǒng)及方法,是非常有必要的。
發(fā)明內(nèi)容
本發(fā)明的目的在于,針對上述API調(diào)用頻次控制不準確的缺陷,提供一種控制API單位時間內(nèi)調(diào)用頻次的系統(tǒng)及方法,以解決上述技術(shù)問題。
為實現(xiàn)上述目的,本發(fā)明給出以下技術(shù)方案:
一種控制API單位時間內(nèi)調(diào)用頻次的系統(tǒng),包括:
隊列分配模塊,用于給每個API分配一個隊列,隊列最大長度等于關(guān)聯(lián)API單位時間內(nèi)最大允許訪問頻次;
API調(diào)用信息獲取模塊,用于攔截到API調(diào)用請求時,獲取該API分配的隊列,獲取該隊列的最大長度,獲取該隊列的實際長度,獲取該隊列的隊頭時間戳,獲取當前時間戳;
判斷模塊,用于判斷是否符合隊列操作條件,以及判斷是否符合API調(diào)用條件;
隊列操作模塊,用于當符合隊列操作條件時,對隊列進行操作;
API調(diào)用動作模塊,用于當符合API調(diào)用條件時,允許此次API調(diào)用,或者,當不符合API調(diào)用條件時,阻止此次API調(diào)用。
進一步地,判斷模塊包括隊列長度判斷單元、時間戳計算單元以及時間戳差值判斷單元;
隊列長度判斷單元,用于判斷API對應(yīng)的隊列實際長度是否小于該隊列的最大長度;
時間戳計算單元,用于當API對應(yīng)的隊列實際長度等于該隊列的最大長度時,用當前時間戳減去隊頭時間戳;
時間戳差值判斷單元,用于判斷當前時間戳與隊頭時間戳的差值是否小于單位時間。
進一步地,隊列操作模塊,當符合隊列操作條件時,對隊列進行操作,具體包括:
當API對應(yīng)的隊列實際長度小于該隊列的最大長度時,將當前時間戳插入隊尾;
或者,當API對應(yīng)的隊列長度等于該隊列的最大長度,且當前時間戳與隊頭時間戳的差值不小于單位時間時,刪除隊頭時間戳,將當前時間戳插入隊尾。
進一步地,API調(diào)用動作模塊,用于當符合API調(diào)用條件時,允許此次API調(diào)用,或者,當不符合API調(diào)用條件時,阻止此次API調(diào)用,具體包括:
當API對應(yīng)的隊列實際長度小于該隊列最大長度時,或者,當API對應(yīng)的隊列實際長度等于該隊列最大長度,且當前時間戳與隊頭時間戳的差值不小于單位時間時,允許此次API調(diào)用;
當API對應(yīng)的隊列實際長度等于該隊列最大長度,且當前時間戳與隊頭時間戳的差值小于單位時間時,阻止此次API調(diào)用。
進一步地,隊頭時間戳和當前時間戳精確到秒。
本發(fā)明還給出如下技術(shù)方案:
一種控制API單位時間內(nèi)調(diào)用頻次的方法,包括如下步驟:
步驟1.給每個API分配一個隊列,隊列最大長度等于關(guān)聯(lián)API單位時間內(nèi)最大允許訪問頻次;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于鄭州云海信息技術(shù)有限公司,未經(jīng)鄭州云海信息技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711098349.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





