專利名稱:一種防止短時間內(nèi)重復請求api服務器的方法
技術領域:
本發(fā)明屬于信息技術領域,特別涉及一種防止短時間內(nèi)重復請求API服務器的方
法。
背景技術:
隨著互聯(lián)網(wǎng)技術的高速發(fā)展,網(wǎng)絡應用也變得越來越豐富多樣,服務端通過對各種各樣的請求進行處理,并將處理結果返回信息給網(wǎng)絡終端。如圖I所示,在未做其他保護處理下,服務器端在收到消息后,直接進行相關的業(yè)務處理,并將處理結果信息返回給客戶端。這種處理流程存在的問題是1、如果前端網(wǎng)頁客戶端未做任何保護措施,網(wǎng)頁客戶端可能存在惡意刷新頁面造成重復發(fā)送同樣請求的情況;2、在大規(guī)??蛻舳思旱那闆r下,多用戶同時發(fā)送請求服務器端進行處理,服務器端在沒有緩沖機制的情況下可能造成服務器端負載過大,無法及時處理甚至導致服務程序崩潰。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術的不足,提供一種防止短時間內(nèi)重復請求API服務器的方法,該方法通過在服務器端添加緩沖機制,過濾短期內(nèi)重復的請求,拒絕可能會超出系統(tǒng)負載上限的請求。本發(fā)明解決其技術問題是采取以下技術方案實現(xiàn)的一種防止短時間內(nèi)重復請求API服務器的方法,包括以下步驟步驟I :在系統(tǒng)啟動時,生成用于存儲固定條目的緩存文件;步驟2 :從收到的請求消息中取出發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要;步驟3 :取出緩存文件中全部條目的消息概要,與當前消息概要進行對比,如果有完全相同的條目,則不執(zhí)行該請求的相應操作,否則執(zhí)行步驟4 ;步驟4:取出緩存文件中時間戳信息與當前消息信息概要相同的條目,如果緩存文件被讀寫鎖保護或者取出的條目中消息概要不是默認消息概要,則不執(zhí)行該請求的相應操作,否則執(zhí)行步驟5;步驟5 :將本次操作覆蓋此條目寫入緩存文件,并開始執(zhí)行此次請求的相應操作;步驟6 :在所有操作都執(zhí)行完成后,將緩存文件中相關條目修改為默認消息概要。而且,所述步驟I生成緩存文件的方法為系統(tǒng)啟動時,從服務端程序配置文件中讀取約定的緩存文件的目錄以及文件名,根據(jù)有效時間戳信息的長度生成全部條目的有效時間戳信息,根據(jù)請求內(nèi)容約定默認消息概要的內(nèi)容,將這些內(nèi)容分別組裝成固定條目,將全部條目覆蓋寫入緩存文件,并且生成與此緩存文件相關的讀寫鎖。而且,所述的固定條目的格式為時間信息加上默認消息概要。而且,所述步驟2組裝消息概要的方法為當有請求消息到達服務端時,取出消息的時間戳信息、發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息,從消息的時間戳信息中截取有效字段組成有效時間戳信息,將其中的發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要。而且,所述步驟4在不執(zhí)行請求的相應操作的同時,還向客戶端返回操作過于頻繁的提示信息。而且,所述步驟5在不執(zhí)行請求的相應操作的同時,還向客戶端返回操作過于頻繁的提示信息。而且,所述步驟6在所有操作都執(zhí)行完成后,將執(zhí)行結果返回給客戶端。本發(fā)明的優(yōu)點和積極效果是本發(fā)明通過在服務器端添加緩沖機制,過濾短期內(nèi)重復的請求,拒絕可能會超出系統(tǒng)負載上限的請求,當用戶在客戶端進行操作時,無論是任何原因導致的請求重發(fā),都會被服務器端識別出并且拒絕重復的操作,直至第一次的操作由內(nèi)部全部完成后,才會響應 相關的操作;同時,在大量用戶并發(fā)訪問服務器端,要求服務器端進行相關處理時,服務器可依據(jù)緩存中的相關信息,獲悉當前服務器相關的負載信息,從而決定是否及時處理當前業(yè)務,若不做處理,則將相關的信息返回給客戶端。本發(fā)明實現(xiàn)了對服務器端的處理操作的雙層的保護功能,初步保證服務器端的負載情況良好,并且避免重復的處理流程造成服務器資源浪費甚至是系統(tǒng)業(yè)務邏輯紊亂等情況發(fā)生。
圖I是現(xiàn)有的服務器端接收數(shù)據(jù)時的處理流程圖;圖2是本發(fā)明的服務器端接收數(shù)據(jù)時的處理流程圖。
具體實施例方式以下結合附圖對本發(fā)明實施例做進一步詳述一種防止短時間內(nèi)重復請求API服務器的方法,是在服務器端添加緩沖機制,過濾短期內(nèi)重復的請求,即在服務器端程序處理時,加入緩沖區(qū)保存當前處理的任務,在緩沖區(qū)讀寫異常時,及時返回系統(tǒng)繁忙的錯誤信息給客戶端,服務器端將每次接收到的請求與當前緩沖區(qū)中的任務進行對比,拒絕重復的操作,這樣能夠對服務器端的處理操作進行雙層保護,初步保證服務器端的負載情況良好,并且避免重復的處理流程造成服務器資源浪費甚至是系統(tǒng)業(yè)務邏輯紊亂等情況發(fā)生。本發(fā)明引入了一個有效時間戳信息的概念假設服務器端接收的消息在正常情況下十秒內(nèi)均可以處理完成,并且在一百毫秒內(nèi),服務器的負載能力只允許一條請求的操作內(nèi)容,則對于系統(tǒng)來講,每次請求的時間戳信息中,生效的內(nèi)容即為從標準基準時間經(jīng)歷的毫秒數(shù)的倒數(shù)第三位至倒數(shù)第四位的內(nèi)容,我們將此生效內(nèi)容命名為有效時間戳信息。如圖2所示,一種防止短時間內(nèi)重復請求API服務器的方法包括以下步驟步驟I :在系統(tǒng)啟動時,在指定目錄下生成指定文件名的緩存文件,該緩存文件用于存儲固定條目的緩存信息,每個條目的格式為時間信息加上默認消息概要。在本步驟中,在系統(tǒng)啟動時,從服務端程序配置文件中讀取約定的緩存文件的目錄以及文件名,根據(jù)有效時間戳信息的長度生成全部條目的有效時間戳信息,根據(jù)系統(tǒng)可能的請求內(nèi)容約定默認消息概要的內(nèi)容,將這些內(nèi)容分別組裝成固定條目(按照上述內(nèi)容即為從OO到99的100條固定條目),以約定的不與請求內(nèi)容沖突的符號分隔開,將全部條目覆蓋寫入緩存文件,并且生成與此緩存文件相關的讀寫鎖,只有所有對此緩存文件的讀寫操作必須持有此鎖才可以進行。步驟2 :從收到的請求消息中取出發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要。在本步驟中,當有請求消息到達服務端時,根據(jù)消息相關的格式(如果不滿足約定的格式,則返回相關錯誤信息)取出消息的時間戳信息、發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息,將消息的時間戳截取有效字段組成有效時間戳信息(在上述約定中為從標準基準時間經(jīng)歷的毫秒數(shù)的倒數(shù)第三位至倒數(shù)第四位),將其中的發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要。步驟3 :取出緩存文件中全部條目的消息概要,與當前消息概要進行對比,如果有完全相同的條目則不執(zhí)行該請求的相應操作并向客戶端返回操作過于頻繁的提示信息,否則執(zhí)行步驟4。在本步驟中,取出緩存文件中全部條目的消息概要(在上述約定中即為100條),將當前請求的消息概要與上述條目中的消息概要進行逐個對比,若有完全相同的消息概要,則表明在約定的時間內(nèi),有完全相同的操作正在被執(zhí)行,并且是由同一用戶發(fā)出的請求,因此可以判定,此用戶在系統(tǒng)執(zhí)行完成之前即發(fā)送了重復的請求,服務器端拒絕此重復操作,并返回錯誤信息提示用戶重復操作。步驟4:取出緩存文件中時間戳信息與當前消息信息概要相同的條目,如果緩存文件被讀寫鎖保護或者取出的條目中消息概要不是默認消息概要,則不執(zhí)行該請求的相應操作并向客戶端返回操作過于頻繁的提示信息,否則執(zhí)行步驟5。在本步驟中,如果對比全部條目的消息概要,沒有發(fā)現(xiàn)完全相同的條目,則表示在約定的時間內(nèi),并沒有相同的操作正在被執(zhí)行,此次請求的操作在系統(tǒng)負載允許的情況下可以被執(zhí)行。因此,取出此次操作的有效時間戳信息,在緩存文件全部條目中,檢索與此有效時間戳信息相同的條目,取出這個條目的消息概要,如果,這個消息概要不為默認消息概要,則表明在約定的服務器負載能力下(在上述約定中即為每百毫秒執(zhí)行一次操作),服務器正在執(zhí)行其他操作,本次請求的操作超出了服務器負載能力,服務器端拒絕此次操作,并返回錯誤信息提示用戶服務器繁忙。步驟5 :將本次操作覆蓋此條目寫入緩存文件,并開始執(zhí)行此次請求的相應操作。在本步驟中,如果步驟4中取出的條目的消息概要為默認消息概要,則表明此次請求操作在服務器允許的負載能力范圍內(nèi),因此,此次請求操作可以被執(zhí)行,在操作執(zhí)行之前,將本次操作的消息概要覆蓋步驟4中取出條目的消息概要,表明在這個時間下,此操作正在被執(zhí)行。步驟6:在所有操作都執(zhí)行完成后,將執(zhí)行結果返回給客戶端,并將緩存文件中相關條目修改為默認消息概要。本步驟是在整個請求操作執(zhí)行全部結束并且將執(zhí)行結果返回給客戶端之后,將步驟4中取出條目的消息概要重新覆蓋寫為默認消息概要,表明在這個時間下,沒有操作正在被執(zhí)行。 通過上述步驟即可實現(xiàn)防止短時間內(nèi)重復請求API服務器的方法。
需要強調(diào)的是,本發(fā)明所述的實施例是說明性的,而不是限定性的,因此本發(fā)明并不限于具體實施方式
中所述的實施例, 凡是由本領域技術人員根據(jù)本發(fā)明的技術方案得出的其他實施方式,同樣屬于本發(fā)明保護的范圍。
權利要求
1.一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于包括以下步驟 步驟I :在系統(tǒng)啟動時,生成用于存儲固定條目的緩存文件; 步驟2 :從收到的請求消息中取出發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要; 步驟3 :取出緩存文件中全部條目的消息概要,與當前消息概要進行對比,如果有完全相同的條目,則不執(zhí)行該請求的相應操作,否則執(zhí)行步驟4 ; 步驟4:取出緩存文件中時間戳信息與當前消息信息概要相同的條目,如果緩存文件被讀寫鎖保護或者取出的條目中消息概要不是默認消息概要,則不執(zhí)行該請求的相應操作,否則執(zhí)行步驟5; 步驟5 :將本次操作覆蓋此條目寫入緩存文件,并開始執(zhí)行此次請求的相應操作; 步驟6 :在所有操作都執(zhí)行完成后,將緩存文件中相關條目修改為默認消息概要。
2.根據(jù)權利要求I所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述步驟I生成緩存文件的方法為系統(tǒng)啟動時,從服務端程序配置文件中讀取約定的緩存文件的目錄以及文件名,根據(jù)有效時間戳信息的長度生成全部條目的有效時間戳信息,根據(jù)請求內(nèi)容約定默認消息概要的內(nèi)容,將這些內(nèi)容分別組裝成固定條目,將全部條目覆蓋寫入緩存文件,并且生成與此緩存文件相關的讀寫鎖。
3.根據(jù)權利要求I或2所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述的固定條目的格式為時間信息加上默認消息概要。
4.根據(jù)權利要求I所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述步驟2組裝消息概要的方法為當有請求消息到達服務端時,取出消息的時間戳信息、發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息,從消息的時間戳信息中截取有效字段組成有效時間戳信息,將其中的發(fā)送者信息、操作類型信息、操作對象信息以及操作相關參數(shù)信息組裝成消息概要。
5.根據(jù)權利要求I所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述步驟4在不執(zhí)行請求的相應操作的同時,還向客戶端返回操作過于頻繁的提示信息。
6.根據(jù)權利要求I所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述步驟5在不執(zhí)行請求的相應操作的同時,還向客戶端返回操作過于頻繁的提示信息。
7.根據(jù)權利要求I所述的一種防止短時間內(nèi)重復請求API服務器的方法,其特征在于所述步驟6在所有操作都執(zhí)行完成后,將執(zhí)行結果返回給客戶端。
全文摘要
本發(fā)明涉及一種防止短時間內(nèi)重復請求API服務器的方法,包括以下步驟1、生成緩存文件;2、組裝消息概要;3、取出緩存文件中全部條目的消息概要,與當前消息概要進行對比,如果有完全相同的條目,則不執(zhí)行該請求的相應操作;4、取出緩存文件中時間戳信息與當前消息信息概要相同的條目,如果緩存文件被讀寫鎖保護或者取出的條目中消息概要不是默認消息概要,則不執(zhí)行該請求的相應操作;5、將本次操作覆蓋此條目寫入緩存文件,并執(zhí)行此次請求的相應操作;6、將緩存文件中相關條目修改為默認消息概要。本發(fā)明實現(xiàn)了對服務器端的處理操作的雙層的保護功能,避免重復的處理流程造成服務器資源浪費甚至是系統(tǒng)業(yè)務邏輯紊亂等情況發(fā)生。
文檔編號H04L29/08GK102710776SQ20121018219
公開日2012年10月3日 申請日期2012年6月5日 優(yōu)先權日2012年6月5日
發(fā)明者俞志堅, 劉曉軍, 朱澤, 朱譽, 范鵬 申請人:天津兆民云計算科技有限公司