一種限額控制方法及分布式限額控制系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種限額控制方法及分布式限額控制系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的普及,上網(wǎng)人群越來(lái)越多,這對(duì)互聯(lián)網(wǎng)的可靠性、擴(kuò)容性提出了很高的要求。分布式系統(tǒng)由于使用了并行處理技術(shù),處理計(jì)算能力強(qiáng),并將工作負(fù)載分散在多臺(tái)機(jī)器上,單機(jī)故障只會(huì)使一臺(tái)機(jī)器停機(jī),因此具有很高的可靠性,而且分布式系統(tǒng)允許在需求增長(zhǎng)時(shí)逐漸進(jìn)行擴(kuò)充,因其具有上述優(yōu)點(diǎn),而普遍應(yīng)用于互聯(lián)網(wǎng)站及其他應(yīng)用系統(tǒng)中。
[0003]互聯(lián)網(wǎng)站及許多應(yīng)用系統(tǒng)中為安全性或體驗(yàn)合理性考慮,經(jīng)常會(huì)對(duì)用戶的行為進(jìn)行控制。例如:天氣預(yù)報(bào)網(wǎng)站為防止其他網(wǎng)站抓取自身天氣源數(shù)據(jù),會(huì)對(duì)來(lái)源ip做每分鐘、每小時(shí)請(qǐng)求次數(shù)限制,一旦固定來(lái)源ip請(qǐng)求次數(shù)超過(guò)系統(tǒng)設(shè)置值,系統(tǒng)屏蔽此ip再次請(qǐng)求。再比如登錄QQ,飛信等通訊即時(shí)軟件后的新郵件到達(dá)提醒,如果不對(duì)每小時(shí)內(nèi)接收郵件數(shù)量做限額控制,那么頻繁的新郵件到達(dá)提醒將大大降低用戶體檢?;谝陨峡紤],需要對(duì)于分布式系統(tǒng)下用戶限額進(jìn)行控制。
[0004]現(xiàn)有的分布式系統(tǒng)下限額控制方法是,假如服務(wù)端要對(duì)客戶端的請(qǐng)求做每分鐘400次限額控制,那么現(xiàn)有技術(shù)一般將400次的限額控制次數(shù)均勻分到各個(gè)服務(wù)器上,即每臺(tái)服務(wù)器的每分鐘限額控制為100次。
[0005]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)的限額控制方法至少存在如下問(wèn)題:
[0006]在客戶端隨機(jī)訪問(wèn)分布式系統(tǒng)中的任一服務(wù)器時(shí),會(huì)導(dǎo)致某一服務(wù)器的接收請(qǐng)求次數(shù)大于其他服務(wù)器的接收請(qǐng)求次數(shù),從而導(dǎo)致限額控制不精準(zhǔn)的問(wèn)題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種限額控制方法及分布式限額控制系統(tǒng),以解決現(xiàn)有技術(shù)中在客戶端隨機(jī)訪問(wèn)分布式系統(tǒng)中的任一服務(wù)器時(shí)存在限額控制不精準(zhǔn)的問(wèn)題。
[0008]為達(dá)到上述目的,本發(fā)明實(shí)施例采用如下技術(shù)方案:
[0009]一方面,本發(fā)明實(shí)施例提供一種限額控制方法,所述方法包括:
[0010]應(yīng)用服務(wù)器接收客戶端發(fā)送的業(yè)務(wù)服務(wù)請(qǐng)求,向限額控制服務(wù)器發(fā)送限額控制請(qǐng)求;
[0011]所述限額控制服務(wù)器根據(jù)所述限額控制請(qǐng)求判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否為所述客戶端的首次業(yè)務(wù)服務(wù)請(qǐng)求;
[0012]如果是首次業(yè)務(wù)服務(wù)請(qǐng)求,所述限額控制服務(wù)器返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器;
[0013]如果不是首次業(yè)務(wù)服務(wù)請(qǐng)求,所述限額控制服務(wù)器進(jìn)一步判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否在有效期限內(nèi),若所述業(yè)務(wù)服務(wù)請(qǐng)求不在有效期限內(nèi),則返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器;若所述業(yè)務(wù)服務(wù)請(qǐng)求在有效期限內(nèi),再進(jìn)一步判斷所述客戶端的請(qǐng)求次數(shù)是否超過(guò)最大限額數(shù),若未超過(guò)最大限額數(shù),返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器,若超過(guò)最大限額數(shù),返回超過(guò)限額指示至所述應(yīng)用服務(wù)器;
[0014]當(dāng)接收到未超過(guò)限額指示時(shí),所述應(yīng)用服務(wù)器根據(jù)所述業(yè)務(wù)服務(wù)請(qǐng)求進(jìn)行業(yè)務(wù)處理,返回處理結(jié)果至所述客戶端;當(dāng)接收到超過(guò)限額指示時(shí),所述應(yīng)用服務(wù)器返回錯(cuò)誤信息響應(yīng)至所述客戶端。
[0015]另一方面,本發(fā)明實(shí)施例提供一種分布式限額控制系統(tǒng),包括限額控制服務(wù)器和至少兩個(gè)應(yīng)用服務(wù)器;
[0016]所述應(yīng)用服務(wù)器,用于接收客戶端發(fā)送的業(yè)務(wù)服務(wù)請(qǐng)求,向限額控制服務(wù)器發(fā)送限額控制請(qǐng)求;當(dāng)接收到未超過(guò)限額指示時(shí),根據(jù)所述業(yè)務(wù)服務(wù)請(qǐng)求進(jìn)行業(yè)務(wù)處理,返回處理結(jié)果至所述客戶端;當(dāng)接收到超過(guò)限額指示時(shí),返回錯(cuò)誤信息響應(yīng)至所述客戶端;
[0017]所述限額控制服務(wù)器,用于根據(jù)所述限額控制請(qǐng)求判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否為所述客戶端的首次業(yè)務(wù)服務(wù)請(qǐng)求;如果是首次業(yè)務(wù)服務(wù)請(qǐng)求,返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器;如果不是首次業(yè)務(wù)服務(wù)請(qǐng)求,進(jìn)一步判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否在有效期限內(nèi),若所述業(yè)務(wù)服務(wù)請(qǐng)求不在有效期限內(nèi),則返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器;若所述業(yè)務(wù)服務(wù)請(qǐng)求在有效期限內(nèi),再進(jìn)一步判斷所述客戶端的請(qǐng)求次數(shù)是否超過(guò)最大限額數(shù),若未超過(guò)最大限額數(shù),返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器,若超過(guò)最大限額數(shù),返回超過(guò)限額指示至所述應(yīng)用服務(wù)器。
[0018]可選地,所述限額控制服務(wù)器獨(dú)立設(shè)置,或者所述限額控制服務(wù)器設(shè)置在任一應(yīng)用服務(wù)器上。
[0019]本發(fā)明實(shí)施例的有益效果是:本發(fā)明提供的限額控制方法及分布式限額控制系統(tǒng),當(dāng)分布式系統(tǒng)中的任一應(yīng)用服務(wù)器收到客戶端的業(yè)務(wù)服務(wù)請(qǐng)求時(shí),通過(guò)向限額控制服務(wù)器發(fā)送限額控制請(qǐng)求,由所述限額控制服務(wù)器統(tǒng)一判斷所述客戶端的當(dāng)前請(qǐng)求次數(shù)是否已經(jīng)超過(guò)最大限額,并向應(yīng)用服務(wù)器返回超過(guò)限額數(shù)指示或者未超過(guò)限額數(shù)指示,應(yīng)用服務(wù)器根據(jù)限額控制服務(wù)器返回的是否超過(guò)限額指示,對(duì)客戶端的業(yè)務(wù)服務(wù)請(qǐng)求或進(jìn)行業(yè)務(wù)處理并返回處理結(jié)果或返回錯(cuò)誤信息響應(yīng)至所述客戶端,從而達(dá)到對(duì)客戶端用戶限額進(jìn)行精準(zhǔn)控制的目的。本發(fā)明實(shí)施例對(duì)均勻接收客戶端請(qǐng)求與隨機(jī)接收客戶端請(qǐng)求的分布式系統(tǒng)都適用。
【附圖說(shuō)明】
[0020]圖1為本發(fā)明實(shí)施例提供的一種限額控制方法流程圖;
[0021]圖2為本發(fā)明實(shí)施例提供的另一種限額控制方法流程圖;
[0022]圖3為本發(fā)明實(shí)施例進(jìn)行限額控制過(guò)程中的主要限額數(shù)據(jù)示意圖;
[0023]圖4為本發(fā)明實(shí)施例提供的一種分布式限額控制系統(tǒng)結(jié)構(gòu)圖;
[0024]圖5為本發(fā)明實(shí)施例提供的一種分布式限額控制系統(tǒng)下進(jìn)行限額控制的方法流程圖。
【具體實(shí)施方式】
[0025]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0026]本發(fā)明實(shí)施例提供一種限額控制方法,應(yīng)用于分布式系統(tǒng)中,如圖1所示,為本發(fā)明實(shí)施例提供的一種限額控制方法流程圖,所述方法包括:
[0027]步驟S120,應(yīng)用服務(wù)器接收客戶端發(fā)送的業(yè)務(wù)服務(wù)請(qǐng)求,向限額控制服務(wù)器發(fā)送限額控制請(qǐng)求。
[0028]分布式系統(tǒng)中一般有多個(gè)應(yīng)用服務(wù)器,客戶端向任一應(yīng)用服務(wù)器發(fā)送業(yè)務(wù)服務(wù)請(qǐng)求,其中任一應(yīng)用服務(wù)器執(zhí)行的流程都是一樣的;該任一應(yīng)用服務(wù)器接收客戶端發(fā)送的業(yè)務(wù)服務(wù)請(qǐng)求后,根據(jù)所述業(yè)務(wù)服務(wù)請(qǐng)求生成限額控制請(qǐng)求。
[0029]步驟S121,限額控制服務(wù)器根據(jù)所述限額控制請(qǐng)求判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否為所述客戶端的首次業(yè)務(wù)服務(wù)請(qǐng)求。
[0030]步驟S122,如果是首次業(yè)務(wù)服務(wù)請(qǐng)求,則返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器。
[0031]步驟S123,如果不是首次業(yè)務(wù)服務(wù)請(qǐng)求,進(jìn)一步判斷所述業(yè)務(wù)服務(wù)請(qǐng)求是否在有效期限內(nèi)。
[0032]步驟S124,若所述業(yè)務(wù)服務(wù)請(qǐng)求不在有效期限內(nèi),則返回未超過(guò)限額指示至所述應(yīng)用服務(wù)器。
[0033]步驟S125,若所述業(yè)務(wù)服務(wù)請(qǐng)求在有效期限內(nèi),再進(jìn)一步判斷所述客戶端的請(qǐng)求次數(shù)是否超過(guò)最大限額數(shù)。
[0034]步驟S126,若未超過(guò)最大限