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