本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,特別是涉及一種訪問(wèn)請(qǐng)求調(diào)控方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來(lái)越多的服務(wù)提供者逐漸將線下服務(wù)擴(kuò)展到了線上互聯(lián)網(wǎng)服務(wù)和線下服務(wù)的結(jié)合,在線上進(jìn)行消息推送、關(guān)注服務(wù)的人員管理、消息群發(fā)等一系列繁雜的服務(wù),需要統(tǒng)一的服務(wù)器進(jìn)行管理,而隨著服務(wù)提供者數(shù)量的增加,對(duì)服務(wù)器的性能要求也越來(lái)越高。
傳統(tǒng)的web服務(wù)器采用Linux+Nginx+PHP(Hypertext Preprocessor,超文本預(yù)處理器)模式對(duì)外界提供服務(wù),Nginx作為接入層,僅用于負(fù)載均衡的反向代理,PHP用于鑒權(quán)和業(yè)務(wù)邏輯,這樣就會(huì)造成大量無(wú)效請(qǐng)求沖擊服務(wù)器,增加服務(wù)器的負(fù)擔(dān)。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)服務(wù)器的負(fù)擔(dān)大的問(wèn)題,提供一種訪問(wèn)請(qǐng)求調(diào)控方法及裝置,能減少無(wú)效請(qǐng)求對(duì)服務(wù)器的沖擊,降低服務(wù)器的負(fù)擔(dān)。
一種訪問(wèn)請(qǐng)求調(diào)控方法,包括:
接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求;
根據(jù)所述訪問(wèn)請(qǐng)求接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),所述請(qǐng)求頭數(shù)據(jù)包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),所述票據(jù)是根據(jù)所述用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌;
根據(jù)所述用戶的網(wǎng)絡(luò)地址獲取所述網(wǎng)絡(luò)地址的訪問(wèn)頻率;
驗(yàn)證所述票據(jù)是否有效,以及驗(yàn)證所述網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值;
若所述票據(jù)有效且所述網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,則完整接收所述訪問(wèn)請(qǐng)求包體,將所述訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;
若所述票據(jù)無(wú)效或所述用戶的訪問(wèn)頻率超過(guò)訪問(wèn)頻率閾值,則丟棄所述請(qǐng)求頭數(shù)據(jù)。
一種訪問(wèn)請(qǐng)求調(diào)控裝置,包括:
請(qǐng)求接收模塊,用于接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求;
驗(yàn)證數(shù)據(jù)接收模塊,用于根據(jù)所述訪問(wèn)請(qǐng)求接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),所述請(qǐng)求頭數(shù)據(jù)包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),所述票據(jù)是根據(jù)所述用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌;
統(tǒng)計(jì)模塊,用于根據(jù)所述用戶的網(wǎng)絡(luò)地址獲取所述網(wǎng)絡(luò)地址的訪問(wèn)頻率;
驗(yàn)證模塊,用于驗(yàn)證所述票據(jù)是否有效,以及驗(yàn)證所述網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值;
請(qǐng)求包接收模塊,用于若所述票據(jù)有效且所述網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,則完整接收所述訪問(wèn)請(qǐng)求包體;
分發(fā)模塊,用于將所述訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;
丟棄模塊,用于若所述票據(jù)無(wú)效或所述網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值,丟棄所述請(qǐng)求頭數(shù)據(jù)。
上述訪問(wèn)請(qǐng)求調(diào)控方法和裝置,接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求后,接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),根據(jù)請(qǐng)求頭數(shù)據(jù)中的用戶的網(wǎng)絡(luò)地址獲取網(wǎng)絡(luò)地址的訪問(wèn)頻率,驗(yàn)證票據(jù)是否有效,以及網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,當(dāng)票據(jù)無(wú)效或超頻時(shí),丟棄該訪問(wèn)請(qǐng)求包體,當(dāng)票據(jù)有效且未超頻時(shí),完整接收訪問(wèn)請(qǐng)求包體,并將訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,使得無(wú)效的訪問(wèn)請(qǐng)求過(guò)濾掉,不需要下載無(wú)效的訪問(wèn)請(qǐng)求的訪問(wèn)請(qǐng)求包體,節(jié)省了網(wǎng)絡(luò)流量,減少了無(wú)效請(qǐng)求對(duì)服務(wù)器的沖擊,降低了服務(wù)器的負(fù)擔(dān)。
附圖說(shuō)明
圖1為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控方法的應(yīng)用環(huán)境示意圖;
圖2為一個(gè)實(shí)施例中策略服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
圖3為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控方法的流程圖;
圖4為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控方法的應(yīng)用原理示意圖;
圖5為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控裝置的結(jié)構(gòu)框圖;
圖6為另一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控方法的應(yīng)用環(huán)境示意圖。如圖1所示,該應(yīng)用環(huán)境包括終端110、策略服務(wù)器120和業(yè)務(wù)服務(wù)器130。終端110上的用戶根據(jù)票據(jù)向策略服務(wù)器120發(fā)起訪問(wèn)請(qǐng)求,該訪問(wèn)請(qǐng)求的訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù)中包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),該票據(jù)是根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌。策略服務(wù)器120根據(jù)用戶的網(wǎng)絡(luò)地址獲取該網(wǎng)絡(luò)地址的訪問(wèn)頻率,驗(yàn)證該票據(jù)是否有效,以及網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,若票據(jù)無(wú)效或網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)了第一訪問(wèn)頻率閾值,則將訪問(wèn)失敗的結(jié)果返回給終端110,并丟棄該請(qǐng)求頭數(shù)據(jù),若該票據(jù)有效且用戶的訪問(wèn)頻率未超過(guò)訪問(wèn)頻率閾值,則完整接收訪問(wèn)請(qǐng)求包體,將訪問(wèn)請(qǐng)求包體分發(fā)到對(duì)應(yīng)的業(yè)務(wù)服務(wù)器130。終端110可為服務(wù)提供者的服務(wù)器等,可為計(jì)算機(jī)或服務(wù)器集群等。策略服務(wù)器120可為一個(gè)或多個(gè)服務(wù)器,用于調(diào)控訪問(wèn)請(qǐng)求。業(yè)務(wù)服務(wù)器130用于處理訪問(wèn)請(qǐng)求。
在其他實(shí)施例中,策略服務(wù)器120和業(yè)務(wù)服務(wù)器130的功能可由一個(gè)服務(wù)器實(shí)現(xiàn)。
圖2為一個(gè)實(shí)施例中策略服務(wù)器(或云端等)的內(nèi)部結(jié)構(gòu)示意圖。如圖2所示,該策略服務(wù)器包括通過(guò)系統(tǒng)總線連接的處理器、非易失性存儲(chǔ)介質(zhì)、內(nèi)存儲(chǔ)器和網(wǎng)絡(luò)接口。其中,該服務(wù)器的非易失性存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫(kù)和訪問(wèn)請(qǐng)求調(diào)控裝置,數(shù)據(jù)庫(kù)中存儲(chǔ)有預(yù)設(shè)的策略、用戶的個(gè)人信息和票據(jù)等,該訪問(wèn)請(qǐng)求調(diào)控裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種訪問(wèn)請(qǐng)求調(diào)控方法。該策略服務(wù)器的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該策略服務(wù)器的內(nèi)存儲(chǔ)器為非易失性存儲(chǔ)介質(zhì)中的訪問(wèn)請(qǐng)求調(diào)控裝置的運(yùn)行提供環(huán)境,該內(nèi)存儲(chǔ)器中可儲(chǔ)存有計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令被所述處理器執(zhí)行時(shí),可使得所述處理器執(zhí)行一種訪問(wèn)請(qǐng)求調(diào)控方法。該策略服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過(guò)網(wǎng)絡(luò)連接通信,比如接收終端發(fā)送的訪問(wèn)請(qǐng)求以及向終端返回訪問(wèn)請(qǐng)求結(jié)果等。策略服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來(lái)實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖2中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
圖3為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控方法的流程圖。如圖3所示,一種訪問(wèn)請(qǐng)求調(diào)控方法,運(yùn)行于策略服務(wù)器上,包括步驟302至步驟312,其中:
步驟302,接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求。
本實(shí)施例中,用戶可為服務(wù)提供者,如視頻服務(wù)提供者、音頻服務(wù)提供者、主播服務(wù)提供者等。用戶所在終端是指服務(wù)提供者所提供的服務(wù)器,如商家服務(wù)器等。
首先,獲取用戶在注冊(cè)界面注冊(cè)服務(wù)號(hào)請(qǐng)求,并獲取用戶輸入的個(gè)人信息,并根據(jù)用戶的個(gè)人信息分配對(duì)應(yīng)的Appid(應(yīng)用程序標(biāo)識(shí))和secret(密鑰)。用戶的個(gè)人信息可包括用戶名稱、地址、聯(lián)系方式、身份證號(hào)碼(或企業(yè)代碼)等。該用戶的應(yīng)用程序標(biāo)識(shí)即為用戶的服務(wù)號(hào)。應(yīng)用程序標(biāo)識(shí)是用于唯一表示用戶身份的字符串。該字符串可為數(shù)字、字母和字符中的一種或多種。密鑰是應(yīng)用程序標(biāo)識(shí)對(duì)應(yīng)的密碼。為了保護(hù)密鑰,策略服務(wù)器會(huì)根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配token(票據(jù))。該票據(jù)是臨時(shí)令牌,具有有效期。
策略服務(wù)器通過(guò)應(yīng)用服務(wù)接入層Nginx接收用戶所在終端通過(guò)票據(jù)發(fā)起的訪問(wèn)請(qǐng)求。
步驟304,根據(jù)該訪問(wèn)請(qǐng)求接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),該請(qǐng)求頭數(shù)據(jù)包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),該票據(jù)是根據(jù)該用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌。
本實(shí)施例中,該訪問(wèn)請(qǐng)求包體可為HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)請(qǐng)求包體。請(qǐng)求包體包括請(qǐng)求行數(shù)據(jù)、請(qǐng)求頭數(shù)據(jù)和請(qǐng)求數(shù)據(jù)。請(qǐng)求行數(shù)據(jù)包括請(qǐng)求方法、請(qǐng)求協(xié)議。該訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù)包括用戶的IP地址(Internet Protocol,網(wǎng)絡(luò)地址)、訪問(wèn)請(qǐng)求地址和票據(jù)。在其他實(shí)施例中請(qǐng)求頭數(shù)據(jù)還可以包括用戶所在終端接受的編碼方式和壓縮方式。請(qǐng)求數(shù)據(jù)用于表示訪問(wèn)請(qǐng)求的具體內(nèi)容,比如消息推送、消息群發(fā)等。
步驟306,根據(jù)該用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址獲取該網(wǎng)絡(luò)地址的訪問(wèn)頻率。
本實(shí)施例中,每次用戶發(fā)送訪問(wèn)請(qǐng)求時(shí)都會(huì)攜帶有用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址,可統(tǒng)計(jì)得到在預(yù)設(shè)時(shí)間內(nèi)用戶的網(wǎng)絡(luò)地址的訪問(wèn)頻率,即同一網(wǎng)絡(luò)地址的訪問(wèn)頻率。
步驟308,驗(yàn)證該票據(jù)是否有效,以及驗(yàn)證該網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值。
本實(shí)施例中,驗(yàn)證該票據(jù)是否有效,包括判斷該票據(jù)是否在有效期內(nèi),若是,則該票據(jù)有效,若否,則該票據(jù)無(wú)效。有效期是指每一個(gè)票據(jù)都有對(duì)應(yīng)的有效期,在有效期內(nèi)該票據(jù)有效,在有效期外該票據(jù)無(wú)效。票據(jù)的有效期可根據(jù)需要設(shè)定,如從生成該票據(jù)起2小時(shí)、3小時(shí)、4小時(shí)等內(nèi)有效,不限于此。
第一訪問(wèn)頻率閾值可根據(jù)需要設(shè)定,如一天100次等。不同的網(wǎng)絡(luò)地址對(duì)應(yīng)的第一訪問(wèn)頻率閾值可相同或不同。
可以先驗(yàn)證該網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,當(dāng)網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值時(shí),再驗(yàn)證該票據(jù)是否有效,當(dāng)網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值時(shí),丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)失敗的結(jié)果返回給用戶所在終端;當(dāng)該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該票據(jù)有效時(shí),完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;當(dāng)票據(jù)無(wú)效時(shí),丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)失敗的結(jié)果返回給用戶所在終端。
也可以先驗(yàn)證該票據(jù)是否有效,若該票據(jù)有效,則驗(yàn)證該網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,若該票據(jù)無(wú)效,則丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)失敗的結(jié)果返回給用戶所在終端;若該票據(jù)無(wú)效且該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;若該網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值,則丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)失敗的結(jié)果返回給用戶所在終端。
步驟310,若該票據(jù)有效且該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)該網(wǎng)絡(luò)地址的訪問(wèn)頻率閾值,則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
本實(shí)施例中,當(dāng)票據(jù)有效且網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,才完整的接收訪問(wèn)請(qǐng)求包體,即接收請(qǐng)求包體的全部數(shù)據(jù)。策略服務(wù)器再將完整接收的請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器進(jìn)行處理,接收業(yè)務(wù)服務(wù)器對(duì)該訪問(wèn)請(qǐng)求包體做出的響應(yīng)結(jié)果,并將該響應(yīng)結(jié)果返回給該用戶所在的終端。
步驟312,若該票據(jù)無(wú)效或該網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值,則丟棄該請(qǐng)求頭數(shù)據(jù)。
本實(shí)施例中,票據(jù)無(wú)效或網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值,即只需滿足一條,則訪問(wèn)失敗,丟棄該請(qǐng)求頭數(shù)據(jù),即不會(huì)接收訪問(wèn)請(qǐng)求包體的其他數(shù)據(jù),將訪問(wèn)失敗的結(jié)果返回給用戶所在終端。
上述訪問(wèn)請(qǐng)求調(diào)控方法,接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求后,接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),根據(jù)請(qǐng)求頭數(shù)據(jù)中的用戶的網(wǎng)絡(luò)地址獲取網(wǎng)絡(luò)地址的訪問(wèn)頻率,驗(yàn)證票據(jù)是否有效,以及網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,當(dāng)票據(jù)無(wú)效或超頻時(shí),丟棄該訪問(wèn)請(qǐng)求包體,當(dāng)票據(jù)有效且未超頻時(shí),完整接收訪問(wèn)請(qǐng)求包體,并將訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,使得無(wú)效的訪問(wèn)請(qǐng)求過(guò)濾掉,不需要下載無(wú)效的訪問(wèn)請(qǐng)求的訪問(wèn)請(qǐng)求包體,節(jié)省了網(wǎng)絡(luò)流量,減少了無(wú)效請(qǐng)求對(duì)服務(wù)器的沖擊,降低了服務(wù)器的負(fù)擔(dān);通過(guò)訪問(wèn)頻率控制,避免惡意攻擊以及正常用戶的超頻調(diào)用。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,以及根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限;若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限時(shí),則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;若該用戶不具有訪問(wèn)權(quán)限,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù)。
本實(shí)施例中,用戶的票據(jù)與用戶的應(yīng)用程序標(biāo)識(shí)對(duì)應(yīng),用戶的應(yīng)用程序標(biāo)識(shí)與用戶的個(gè)人信息對(duì)應(yīng),根據(jù)票據(jù)可得到對(duì)應(yīng)的個(gè)人信息。對(duì)每個(gè)用戶分配對(duì)應(yīng)的訪問(wèn)權(quán)限,根據(jù)用戶的個(gè)人信息可判斷用戶是否具有訪問(wèn)請(qǐng)求地址的訪問(wèn)權(quán)限。當(dāng)該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限時(shí),則完整接收該訪問(wèn)請(qǐng)求包體。
在網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且票據(jù)有效時(shí),根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,以及根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限。
當(dāng)票據(jù)無(wú)效、網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值、用戶不具有訪問(wèn)權(quán)限任意一項(xiàng)成立,則訪問(wèn)失敗,將訪問(wèn)失敗的結(jié)果返回給用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù),即不需要接收訪問(wèn)請(qǐng)求包體的其他數(shù)據(jù)。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值;若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值時(shí),則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;若該用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù)。
具體地,在網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且票據(jù)有效時(shí),根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值。
第二訪問(wèn)頻率閾值可根據(jù)需要設(shè)定,用于限定用戶的訪問(wèn)頻率。當(dāng)票據(jù)有效、網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值時(shí),完整接收該訪問(wèn)請(qǐng)求包體。當(dāng)票據(jù)無(wú)效、網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值、用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值滿足任意一條,則丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值;以及根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,以及根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限;若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值、該用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限時(shí),則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;若該用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值或該用戶不具有訪問(wèn)權(quán)限時(shí),則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù)。
具體地,在網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且票據(jù)有效時(shí),根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值,若該用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值,則根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,并根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限,若用戶具有訪問(wèn)權(quán)限,則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,若用戶不具有訪問(wèn)權(quán)限,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù);若用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù)。
在網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且票據(jù)有效時(shí),根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,并根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限,若用戶具有訪問(wèn)權(quán)限,則根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值,若用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值,則完整接收該訪問(wèn)請(qǐng)求包體,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,若用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù);若用戶不具有訪問(wèn)權(quán)限,則將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù)。
第二訪問(wèn)頻率閾值可根據(jù)需要設(shè)定,用于限定用戶的訪問(wèn)頻率。當(dāng)票據(jù)有效、網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值以及用戶具有訪問(wèn)權(quán)限時(shí),完整接收該訪問(wèn)請(qǐng)求包體。當(dāng)票據(jù)無(wú)效、網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值、用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值、用戶不具有訪問(wèn)權(quán)限滿足任意一條,則丟棄該請(qǐng)求頭數(shù)據(jù),將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端。
在一個(gè)實(shí)施例中,將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,包括:獲取用戶的應(yīng)用程序標(biāo)識(shí)和應(yīng)用程序標(biāo)識(shí)類型,根據(jù)該用戶的應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址根據(jù)預(yù)設(shè)的策略服務(wù)判定該用戶所屬的環(huán)境;根據(jù)該用戶所屬的環(huán)境按照預(yù)設(shè)的環(huán)境分發(fā)策略將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
本實(shí)施例中,用戶的應(yīng)用程序標(biāo)識(shí)是用于唯一表示用戶身份的字符串,例如可為公眾服務(wù)號(hào),如123456。應(yīng)用程序標(biāo)識(shí)類型可包括測(cè)試類型、服務(wù)類型等。用戶的網(wǎng)絡(luò)地址是指用戶所在終端的網(wǎng)絡(luò)地址。訪問(wèn)請(qǐng)求地址是指用戶所在終端所要訪問(wèn)的網(wǎng)絡(luò)地址。
預(yù)設(shè)的策略服務(wù)是預(yù)先訓(xùn)練數(shù)據(jù)建立的策略服務(wù)。策略服務(wù)包括應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶所在終端的網(wǎng)絡(luò)地址、內(nèi)部外部請(qǐng)求、服務(wù)器的網(wǎng)絡(luò)地址等維度。內(nèi)部外部請(qǐng)求包括內(nèi)部請(qǐng)求和外部請(qǐng)求。內(nèi)部請(qǐng)求是指內(nèi)網(wǎng)的訪問(wèn)請(qǐng)求。外部請(qǐng)求是指外網(wǎng)的訪問(wèn)請(qǐng)求。根據(jù)用戶所在終端的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址可以確定該訪問(wèn)請(qǐng)求屬于外部請(qǐng)求還是內(nèi)部請(qǐng)求。
根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址可判定用戶所屬的環(huán)境。用戶所屬的環(huán)境可采用環(huán)境標(biāo)識(shí)表示。該環(huán)境標(biāo)識(shí)用于唯一表示某一環(huán)境。
預(yù)設(shè)的環(huán)境分發(fā)策略是指預(yù)先建立的環(huán)境與業(yè)務(wù)服務(wù)器的對(duì)應(yīng)關(guān)系,根據(jù)用戶所屬的環(huán)境可確定對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,將訪問(wèn)請(qǐng)求包體分發(fā)到對(duì)應(yīng)的業(yè)務(wù)服務(wù)器進(jìn)行處理。用戶所屬的環(huán)境可為灰度發(fā)布環(huán)境。該灰度發(fā)布環(huán)境是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式。A/B測(cè)試是灰度發(fā)布方式,是指一部分用戶繼續(xù)使用A,一部分用戶開(kāi)始使用B,如果用戶對(duì)B沒(méi)有反對(duì)意見(jiàn),則逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來(lái)。
通過(guò)用戶所屬的環(huán)境將訪問(wèn)請(qǐng)求包體分發(fā)到對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,支持不同應(yīng)用程序標(biāo)識(shí)、不同應(yīng)用程序標(biāo)識(shí)類型的不同環(huán)境的分發(fā),節(jié)約外網(wǎng)流量,屏蔽無(wú)效請(qǐng)求,節(jié)約內(nèi)網(wǎng)流量,無(wú)需轉(zhuǎn)發(fā)無(wú)效請(qǐng)求。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:記錄該訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址。
本實(shí)施例中,無(wú)論訪問(wèn)成功或失敗,均記錄該訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址。請(qǐng)求狀態(tài)碼是指HTTP狀態(tài)碼。HTTP狀態(tài)碼(HTTP Status Code)是用以表示網(wǎng)頁(yè)服務(wù)器HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼。它由RFC2616規(guī)范定義的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等規(guī)范擴(kuò)展。其中,100表示客戶端應(yīng)該繼續(xù)發(fā)送請(qǐng)求。101表示服務(wù)器理解客戶端的需求,并將通過(guò)Upgrade消息頭通知客戶端采用不同的協(xié)議來(lái)完成這個(gè)請(qǐng)求。102表示處理將被繼續(xù)執(zhí)行。200表示請(qǐng)求已成功。201表示請(qǐng)求已經(jīng)被實(shí)現(xiàn),而且有一個(gè)新的資源已經(jīng)依據(jù)請(qǐng)求的需要建立,且其URL(Uniform Resource Locator,統(tǒng)一資源定位符)已經(jīng)隨Location頭信息返回。202表示服務(wù)器已接受請(qǐng)求,但尚未處理。203表示服務(wù)器已成功處理了請(qǐng)求,但返回的實(shí)體頭部元信息不是在原始服務(wù)器上有效的確定集合,而是來(lái)自本地或第三方的拷貝等。
通過(guò)接收并記錄上報(bào)的請(qǐng)求數(shù)據(jù),提升服務(wù)運(yùn)營(yíng)指令,達(dá)到可量化。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:當(dāng)訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或該訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),以及接收該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,并將該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
本實(shí)施例中,當(dāng)檢測(cè)到訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),表示服務(wù)器的壓力過(guò)大,可以增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),接收核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,將該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。訪問(wèn)請(qǐng)求量是指總的訪問(wèn)請(qǐng)求的數(shù)量。指定閾值可根據(jù)需要設(shè)定,如10000個(gè)等。指定時(shí)間可根據(jù)需要設(shè)定,如3秒、5秒等。核心業(yè)務(wù)是預(yù)先配置的,如搶紅包業(yè)務(wù)、奧運(yùn)會(huì)直播業(yè)務(wù)等。通過(guò)增加核心業(yè)務(wù)的優(yōu)先級(jí),使得非核心業(yè)務(wù)的優(yōu)先級(jí)低于核心業(yè)務(wù)的優(yōu)先級(jí),保證核心業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:當(dāng)訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或該訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),降低除該核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí)。
本實(shí)施例中,降低除核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí),使得非核心業(yè)務(wù)的優(yōu)先級(jí)低于核心業(yè)務(wù)的優(yōu)先級(jí),保證核心業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。
在一個(gè)實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控方法還包括:當(dāng)訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或該訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),以及接收該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,并將該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,并降低除該核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí)。
本實(shí)施例中,可通過(guò)增加核心業(yè)務(wù)的優(yōu)先級(jí),降低除核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí),使得非核心業(yè)務(wù)的優(yōu)先級(jí)低于核心業(yè)務(wù)的優(yōu)先級(jí),保證核心業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。
為了更清楚的說(shuō)明上述訪問(wèn)請(qǐng)求調(diào)控方法的應(yīng)用原理,下面結(jié)合附圖4說(shuō)明其工作原理,在策略服務(wù)器上配置有Nginx接入服務(wù)、策略調(diào)控服務(wù)和數(shù)據(jù)存儲(chǔ)服務(wù),其中,Nginx是一種高性能的HTTP和反向代理服務(wù)。工作過(guò)程包括(1)~(7):
(1)用戶所在終端向Nginx接入服務(wù)發(fā)起訪問(wèn)請(qǐng)求。
(2)Nginx接入服務(wù)根據(jù)訪問(wèn)請(qǐng)求接收該訪問(wèn)請(qǐng)求的訪問(wèn)請(qǐng)求包體中的請(qǐng)求頭數(shù)據(jù),該請(qǐng)求頭數(shù)據(jù)包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),該票據(jù)是根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌;將請(qǐng)求頭數(shù)據(jù)發(fā)送給策略調(diào)控服務(wù)。
(3)策略調(diào)控服務(wù)根據(jù)用戶的網(wǎng)絡(luò)地址獲取該網(wǎng)絡(luò)地址的訪問(wèn)頻率,判斷該網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,若是,則丟棄該請(qǐng)求頭數(shù)據(jù),并將訪問(wèn)失敗的結(jié)果返回給Nginx接入服務(wù),由Nginx接入服務(wù)返回給用戶所在的終端,若否,則驗(yàn)證票據(jù)是否有效,若票據(jù)有效,則根據(jù)用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率,判斷用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值,若是,則丟棄該請(qǐng)求頭數(shù)據(jù),并將訪問(wèn)失敗的結(jié)果返回給Nginx接入服務(wù),若否,則根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,根據(jù)用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限,用戶具有訪問(wèn)權(quán)限,則驗(yàn)證成功,由Nginx完整接收訪問(wèn)請(qǐng)求包體,若用戶不具有訪問(wèn)權(quán)限,則丟棄該請(qǐng)求頭數(shù)據(jù),并將訪問(wèn)失敗的結(jié)果返回給Nginx接入服務(wù);若票據(jù)無(wú)效,則直接丟棄該請(qǐng)求頭數(shù)據(jù),并將訪問(wèn)失敗的結(jié)果返回給Nginx接入服務(wù);策略調(diào)控服務(wù)還獲取用戶的應(yīng)用程序標(biāo)識(shí)和應(yīng)用程序標(biāo)識(shí)類型,根據(jù)該用戶的應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址根據(jù)預(yù)設(shè)的策略服務(wù)判定該用戶所屬的環(huán)境,并將該用戶所屬的環(huán)境返回給Nginx接入服務(wù)。
(4)Nginx接入服務(wù)根據(jù)驗(yàn)證結(jié)果進(jìn)行相應(yīng)的處理,若驗(yàn)證結(jié)果為該票據(jù)有效、該用戶的訪問(wèn)頻率未超過(guò)訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限,則完整接收訪問(wèn)請(qǐng)求包體,并根據(jù)用戶所屬的環(huán)境按照預(yù)設(shè)的環(huán)境分發(fā)策略將訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,如素材服務(wù)器、消息A服務(wù)器和消息B服務(wù)器等。消息A服務(wù)器是用于接收并響應(yīng)A/B測(cè)試中繼續(xù)使用A的用戶發(fā)送的消息。消息B服務(wù)器是用于接收并響應(yīng)A/B測(cè)試中使用B的用戶發(fā)送的消息。
(5)Nginx接入服務(wù)還接收業(yè)務(wù)服務(wù)器對(duì)訪問(wèn)請(qǐng)求的響應(yīng)結(jié)果,并將響應(yīng)結(jié)果返回給用戶所在的終端;若票據(jù)無(wú)效或網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值或用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值或用戶不具有訪問(wèn)權(quán)限,則Nginx接入服務(wù)丟棄該請(qǐng)求頭數(shù)據(jù),并將訪問(wèn)失敗的結(jié)果返回給用戶所在的終端。
(6)Nginx接入服務(wù)將該訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址發(fā)送給數(shù)據(jù)存儲(chǔ)服務(wù)記錄。
(7)策略調(diào)控服務(wù)調(diào)用數(shù)據(jù)存儲(chǔ)服務(wù)記錄的訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址統(tǒng)計(jì)用戶的訪問(wèn)頻率,判斷用戶的訪問(wèn)頻率是否超過(guò)訪問(wèn)頻率閾值等。
此外,策略調(diào)控服務(wù)還當(dāng)訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或所述訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),以及接收所述核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,并將所述核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;和/或,降低除所述核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí)。
上述訪問(wèn)請(qǐng)求調(diào)控方法,通過(guò)Nginx接入服務(wù)接收請(qǐng)求頭數(shù)據(jù),有策略調(diào)控服務(wù)對(duì)請(qǐng)求頭數(shù)據(jù)中票據(jù)、用戶的訪問(wèn)頻率和用戶的訪問(wèn)權(quán)限進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后,完整接收訪問(wèn)請(qǐng)求包體,驗(yàn)證不通過(guò),則丟失請(qǐng)求頭數(shù)據(jù),節(jié)約了外網(wǎng)流量,屏蔽了無(wú)效請(qǐng)求,節(jié)約內(nèi)網(wǎng)流量,無(wú)需轉(zhuǎn)發(fā)無(wú)效請(qǐng)求,同時(shí)保護(hù)后端的業(yè)務(wù)服務(wù),避免遭受攻擊,更加安全,接收上報(bào)的請(qǐng)求數(shù)據(jù),提升服務(wù)運(yùn)營(yíng)指令,達(dá)到可量化,支持降級(jí)服務(wù)。
圖5為一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控裝置的結(jié)構(gòu)框圖。如圖5所示,一種訪問(wèn)請(qǐng)求調(diào)控裝置,包括請(qǐng)求接收模塊502、驗(yàn)證數(shù)據(jù)接收模塊504、統(tǒng)計(jì)模塊506、驗(yàn)證模塊508、請(qǐng)求包接收模塊510、分發(fā)模塊512、丟棄模塊514、響應(yīng)接收模塊516和返回模塊518。其中:
請(qǐng)求接收模塊502用于接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求。
本實(shí)施例中,用戶可為服務(wù)提供者,如視頻服務(wù)提供者、音頻服務(wù)提供者、主播服務(wù)提供者等。用戶所在終端是指服務(wù)提供者所提供的服務(wù)器,如商家服務(wù)器等。
首先,獲取用戶在注冊(cè)界面注冊(cè)服務(wù)號(hào)請(qǐng)求,并獲取用戶輸入的個(gè)人信息,并根據(jù)用戶的個(gè)人信息分配對(duì)應(yīng)的Appid(應(yīng)用程序標(biāo)識(shí))和secret(密鑰)。用戶的個(gè)人信息可包括用戶名稱、地址、聯(lián)系方式、身份證號(hào)碼(或企業(yè)代碼)等。該用戶的應(yīng)用程序標(biāo)識(shí)即為用戶的服務(wù)號(hào)。應(yīng)用程序標(biāo)識(shí)是用于唯一表示用戶身份的字符串。該字符串可為數(shù)字、字母和字符中的一種或多種。密鑰是應(yīng)用程序標(biāo)識(shí)對(duì)應(yīng)的密碼。為了保護(hù)密鑰,策略服務(wù)器會(huì)根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配token(票據(jù))。該票據(jù)是臨時(shí)令牌,具有有效期。
策略服務(wù)器通過(guò)應(yīng)用服務(wù)接入層Nginx接收用戶所在終端通過(guò)票據(jù)發(fā)起的訪問(wèn)請(qǐng)求。
驗(yàn)證數(shù)據(jù)接收模塊504用于根據(jù)該訪問(wèn)請(qǐng)求接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),該請(qǐng)求頭數(shù)據(jù)包括用戶的網(wǎng)絡(luò)地址、訪問(wèn)請(qǐng)求地址和票據(jù),該票據(jù)是根據(jù)該用戶的應(yīng)用程序標(biāo)識(shí)和密鑰分配的臨時(shí)令牌。
本實(shí)施例中,該訪問(wèn)請(qǐng)求包體可為HTTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)請(qǐng)求包體,該訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù)包括用戶的IP地址(Internet Protocol,網(wǎng)絡(luò)地址)、訪問(wèn)請(qǐng)求地址和票據(jù)。
統(tǒng)計(jì)模塊506用于根據(jù)該用戶的網(wǎng)絡(luò)地址獲取該網(wǎng)絡(luò)地址的訪問(wèn)頻率。
本實(shí)施例中,每次用戶發(fā)送訪問(wèn)請(qǐng)求時(shí)都會(huì)攜帶有用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址,可統(tǒng)計(jì)得到在預(yù)設(shè)時(shí)間內(nèi)用戶的網(wǎng)絡(luò)地址的訪問(wèn)頻率,即同一網(wǎng)絡(luò)地址的訪問(wèn)頻率。
驗(yàn)證模塊508用于驗(yàn)證該票據(jù)是否有效,以及驗(yàn)證該網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值。
本實(shí)施例中,驗(yàn)證該票據(jù)是否有效,包括判斷該票據(jù)是否在有效期內(nèi),若是,則該票據(jù)有效,若否,則該票據(jù)無(wú)效。有效期是指每一個(gè)票據(jù)都有對(duì)應(yīng)的有效期,在有效期內(nèi)該票據(jù)有效,在有效期外該票據(jù)無(wú)效。票據(jù)的有效期可根據(jù)需要設(shè)定,如從生成該票據(jù)起2小時(shí)、3小時(shí)、4小時(shí)等內(nèi)有效,不限于此。
第一訪問(wèn)頻率閾值可根據(jù)需要設(shè)定,如一天100次等。不同的網(wǎng)絡(luò)地址對(duì)應(yīng)的第一訪問(wèn)頻率閾值可相同或不同。
請(qǐng)求包接收模塊510用于若該票據(jù)有效且該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,則完整接收該訪問(wèn)請(qǐng)求包體。
本實(shí)施例中,當(dāng)票據(jù)有效且網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值,才完整的接收訪問(wèn)請(qǐng)求包體,即接收請(qǐng)求包體的全部數(shù)據(jù)。
分發(fā)模塊512用于將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
本實(shí)施例中,分發(fā)模塊512將完整接收的請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器進(jìn)行處理,響應(yīng)接收模塊516用于接收業(yè)務(wù)服務(wù)器對(duì)該訪問(wèn)請(qǐng)求包體做出的響應(yīng)結(jié)果,返回模塊518將該響應(yīng)結(jié)果返回給該用戶所在的終端。
丟棄模塊514用于若該票據(jù)無(wú)效或該網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值,丟棄該請(qǐng)求頭數(shù)據(jù)。
本實(shí)施例中,返回模塊518還將訪問(wèn)失敗的結(jié)果返回給用戶所在的終端。
上述訪問(wèn)請(qǐng)求調(diào)控裝置,接收用戶所在終端發(fā)起的訪問(wèn)請(qǐng)求后,接收訪問(wèn)請(qǐng)求包體的請(qǐng)求頭數(shù)據(jù),根據(jù)請(qǐng)求頭數(shù)據(jù)中的用戶的網(wǎng)絡(luò)地址獲取網(wǎng)絡(luò)地址的訪問(wèn)頻率,驗(yàn)證票據(jù)是否有效,以及網(wǎng)絡(luò)地址的訪問(wèn)頻率是否超過(guò)第一訪問(wèn)頻率閾值,當(dāng)票據(jù)無(wú)效或超頻時(shí),丟棄該訪問(wèn)請(qǐng)求包體,當(dāng)票據(jù)有效且未超頻時(shí),完整接收訪問(wèn)請(qǐng)求包體,并將訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,使得無(wú)效的訪問(wèn)請(qǐng)求過(guò)濾掉,不需要下載無(wú)效的訪問(wèn)請(qǐng)求的訪問(wèn)請(qǐng)求包體,節(jié)省了網(wǎng)絡(luò)流量,減少了無(wú)效請(qǐng)求對(duì)服務(wù)器的沖擊,降低了服務(wù)器的負(fù)擔(dān);通過(guò)訪問(wèn)頻率控制,避免惡意攻擊以及正常用戶的超頻調(diào)用。
在一個(gè)實(shí)施例中,該驗(yàn)證模塊508還用于根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,以及根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有發(fā)起該訪問(wèn)請(qǐng)求的權(quán)限。
本實(shí)施例中,用戶的票據(jù)與用戶的應(yīng)用程序標(biāo)識(shí)對(duì)應(yīng),用戶的應(yīng)用程序標(biāo)識(shí)與用戶的個(gè)人信息對(duì)應(yīng),根據(jù)票據(jù)可得到對(duì)應(yīng)的個(gè)人信息。對(duì)每個(gè)用戶分配對(duì)應(yīng)的訪問(wèn)權(quán)限,根據(jù)用戶的個(gè)人信息可判斷用戶是否具有訪問(wèn)請(qǐng)求地址的訪問(wèn)權(quán)限。
該請(qǐng)求包接收模塊510還用于若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限時(shí),則完整接收該訪問(wèn)請(qǐng)求包體。
該分發(fā)模塊512還用于將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
丟棄模塊514還用于若該用戶不具有訪問(wèn)權(quán)限,丟棄該請(qǐng)求頭數(shù)據(jù)。
當(dāng)票據(jù)無(wú)效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率超過(guò)第一訪問(wèn)頻率閾值、用戶不具有訪問(wèn)權(quán)限任意一項(xiàng)成立,則訪問(wèn)失敗,將訪問(wèn)失敗的結(jié)果返回給用戶所在終端,并丟棄該請(qǐng)求頭數(shù)據(jù),即不需要接收訪問(wèn)請(qǐng)求包體的其他數(shù)據(jù)。
在一個(gè)實(shí)施例中,統(tǒng)計(jì)模塊506還用于根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率;驗(yàn)證模塊508還用于判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值;請(qǐng)求包接收模塊510還用于若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值且該用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值時(shí),則完整接收該訪問(wèn)請(qǐng)求包體;分發(fā)模塊512還用于將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;丟棄模塊514還用于若該用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值,丟棄該請(qǐng)求頭數(shù)據(jù),返回模塊518還用于將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端。
在一個(gè)實(shí)施例中,統(tǒng)計(jì)模塊506還用于根據(jù)該用戶的票據(jù)和訪問(wèn)請(qǐng)求地址獲取該用戶的訪問(wèn)頻率;驗(yàn)證模塊508還用于判斷該用戶的訪問(wèn)頻率是否超過(guò)第二訪問(wèn)頻率閾值,以及根據(jù)該票據(jù)獲取對(duì)應(yīng)的用戶的個(gè)人信息,以及根據(jù)該用戶的個(gè)人信息判斷該用戶是否具有訪問(wèn)權(quán)限;請(qǐng)求包接收模塊510還用于若該票據(jù)有效、該網(wǎng)絡(luò)地址的訪問(wèn)頻率未超過(guò)第一訪問(wèn)頻率閾值、該用戶的訪問(wèn)頻率未超過(guò)第二訪問(wèn)頻率閾值且該用戶具有訪問(wèn)權(quán)限時(shí),則完整接收該訪問(wèn)請(qǐng)求包體;分發(fā)模塊512還用于將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;丟棄模塊514還用于若該用戶的訪問(wèn)頻率超過(guò)第二訪問(wèn)頻率閾值或該用戶不具有訪問(wèn)權(quán)限時(shí),丟棄該請(qǐng)求頭數(shù)據(jù);返回模塊518還用于將訪問(wèn)請(qǐng)求失敗的結(jié)果返回給該用戶所在終端。
在一個(gè)實(shí)施例中,該分發(fā)模塊512還用于獲取用戶標(biāo)識(shí)和用戶標(biāo)識(shí)類型,根據(jù)該用戶標(biāo)識(shí)、用戶標(biāo)識(shí)類型、用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址根據(jù)預(yù)設(shè)的策略服務(wù)判定該用戶所屬的環(huán)境,以及根據(jù)該用戶所屬的環(huán)境按照預(yù)設(shè)的環(huán)境分發(fā)策略將該訪問(wèn)請(qǐng)求包體發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器。
本實(shí)施例中,用戶的應(yīng)用程序標(biāo)識(shí)是用于唯一表示用戶身份的字符串,例如可為公眾服務(wù)號(hào),如123456。應(yīng)用程序標(biāo)識(shí)類型可包括測(cè)試類型、服務(wù)類型等。用戶的網(wǎng)絡(luò)地址是指用戶所在終端的網(wǎng)絡(luò)地址。訪問(wèn)請(qǐng)求地址是指用戶所在終端所要訪問(wèn)的網(wǎng)絡(luò)地址。
預(yù)設(shè)的策略服務(wù)是預(yù)先訓(xùn)練數(shù)據(jù)建立的策略服務(wù)。策略服務(wù)包括應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶所在終端的網(wǎng)絡(luò)地址、內(nèi)部外部請(qǐng)求、服務(wù)器的網(wǎng)絡(luò)地址等維度。內(nèi)部外部請(qǐng)求包括內(nèi)部請(qǐng)求和外部請(qǐng)求。內(nèi)部請(qǐng)求是指內(nèi)網(wǎng)的訪問(wèn)請(qǐng)求。外部請(qǐng)求是指外網(wǎng)的訪問(wèn)請(qǐng)求。根據(jù)用戶所在終端的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址可以確定該訪問(wèn)請(qǐng)求屬于外部請(qǐng)求還是內(nèi)部請(qǐng)求。
根據(jù)用戶的應(yīng)用程序標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)類型、用戶的網(wǎng)絡(luò)地址和訪問(wèn)請(qǐng)求地址可判定用戶所屬的環(huán)境。用戶所屬的環(huán)境可采用環(huán)境標(biāo)識(shí)表示。該環(huán)境標(biāo)識(shí)用于唯一表示某一環(huán)境。
預(yù)設(shè)的環(huán)境分發(fā)策略是指預(yù)先建立的環(huán)境與業(yè)務(wù)服務(wù)器的對(duì)應(yīng)關(guān)系,根據(jù)用戶所屬的環(huán)境可確定對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,將訪問(wèn)請(qǐng)求包體分發(fā)到對(duì)應(yīng)的業(yè)務(wù)服務(wù)器進(jìn)行處理。通過(guò)用戶所屬的環(huán)境將訪問(wèn)請(qǐng)求包體分發(fā)到對(duì)應(yīng)的業(yè)務(wù)服務(wù)器,支持不同應(yīng)用程序標(biāo)識(shí)、不同應(yīng)用程序標(biāo)識(shí)類型的不同環(huán)境的分發(fā),節(jié)約外網(wǎng)流量,屏蔽無(wú)效請(qǐng)求,節(jié)約內(nèi)網(wǎng)流量,無(wú)需轉(zhuǎn)發(fā)無(wú)效請(qǐng)求。
圖6為另一個(gè)實(shí)施例中訪問(wèn)請(qǐng)求調(diào)控裝置的結(jié)構(gòu)框圖。如圖6所示,一種訪問(wèn)請(qǐng)求調(diào)控裝置,除了包括請(qǐng)求接收模塊502、驗(yàn)證數(shù)據(jù)接收模塊504、統(tǒng)計(jì)模塊506、驗(yàn)證模塊508、請(qǐng)求包接收模塊510、分發(fā)模塊512、丟棄模塊514、響應(yīng)接收模塊516和返回模塊518,還包括記錄模塊520和優(yōu)先級(jí)調(diào)整模塊522。其中:
記錄模塊520用于記錄該訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址。
本實(shí)施例中,無(wú)論訪問(wèn)成功或失敗,均記錄該訪問(wèn)請(qǐng)求的請(qǐng)求時(shí)間、請(qǐng)求狀態(tài)碼和用戶的網(wǎng)絡(luò)地址。請(qǐng)求狀態(tài)碼是指HTTP狀態(tài)碼。通過(guò)接收并記錄上報(bào)的請(qǐng)求數(shù)據(jù),提升服務(wù)運(yùn)營(yíng)指令,達(dá)到可量化。
優(yōu)先級(jí)調(diào)整模塊522用于當(dāng)訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或該訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),以及接收該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,并將該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;和/或,降低除該核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí)。
本實(shí)施例中,當(dāng)檢測(cè)到訪問(wèn)請(qǐng)求量超過(guò)指定閾值和/或訪問(wèn)請(qǐng)求在指定時(shí)間內(nèi)未響應(yīng)時(shí),表示服務(wù)器的壓力過(guò)大,可以增加預(yù)設(shè)的核心業(yè)務(wù)的優(yōu)先級(jí),接收核心業(yè)務(wù)的訪問(wèn)請(qǐng)求,將該核心業(yè)務(wù)的訪問(wèn)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)服務(wù)器;和/或降低除該核心業(yè)務(wù)外的業(yè)務(wù)的優(yōu)先級(jí)。訪問(wèn)請(qǐng)求量是指總的訪問(wèn)請(qǐng)求的數(shù)量。指定閾值可根據(jù)需要設(shè)定,如10000個(gè)等。指定時(shí)間可根據(jù)需要設(shè)定,如3秒、5秒等。核心業(yè)務(wù)是預(yù)先配置的,如搶紅包業(yè)務(wù)、奧運(yùn)會(huì)直播業(yè)務(wù)等。通過(guò)增加核心業(yè)務(wù)的優(yōu)先級(jí),和/或降低非核心業(yè)務(wù)的優(yōu)先級(jí),使得非核心業(yè)務(wù)的優(yōu)先級(jí)低于核心業(yè)務(wù)的優(yōu)先級(jí),保證核心業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。
在其他實(shí)施例中,上述訪問(wèn)請(qǐng)求調(diào)控裝置,可包括請(qǐng)求接收模塊502、驗(yàn)證數(shù)據(jù)接收模塊504、統(tǒng)計(jì)模塊506、驗(yàn)證模塊508、請(qǐng)求包接收模塊510、分發(fā)模塊512、丟棄模塊514、響應(yīng)接收模塊516、返回模塊518、記錄模塊520和優(yōu)先級(jí)調(diào)整模塊522中所有可能的組合。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。