3]保存設置模塊,用于如果自身存儲的客戶端標識中不存在所述客戶端的標識信息,在客戶端標識中保存所述客戶端的標識信息,將請求次數(shù)設置為1,將當前時間設置為第一次請求時間,返回未超過限額指示至所述應用服務器。
[0074]優(yōu)選的,再一實施方式中,所述限額控制服務器410還包括:
[0075]第二判斷模塊,用于判斷當前時間減去預存的第一次請求時間得到的時間差值是否小于或等于預設的時間長度,若是,則判斷所述業(yè)務服務請求在有效期限內,若否,則判斷所述業(yè)務服務請求不在有效期限內。
[0076]進一步地,所述限額控制服務器還包括:
[0077]第二處理模塊,用于若所述時間差值大于所述預設的時間長度,將請求次數(shù)置為1,將所述當前時間設置為第一次請求時間,返回未超過限額指示至所述應用服務器;
[0078]第三處理模塊,用于若所述時間差值小于或等于所述預設的時間長度,將請求次數(shù)加I后得到所述客戶端的當前請求次數(shù);判斷所述客戶端的當前請求次數(shù)是否小于等于最大限額數(shù),若小于等于最大限額數(shù),返回未超過限額指示至所述應用服務器420;若所述客戶端的請求次數(shù)大于最大限額數(shù),返回超過限額指示至所述應用服務器420。
[0079]為了更清楚的說明本發(fā)明的技術方案,以下結合一種具體的應用場景,對本發(fā)明提供的限額控制方法及分布式限額控制系統(tǒng)進行詳細闡述。
[0080]在本應用場景下,如圖5所示,本發(fā)明實施例提供的一種分布式限額控制系統(tǒng)包括四個應用服務器,分別是應用服務器A、應用服務器B、應用服務器C以及應用服務器D,一個獨立設置的限額控制服務器以及一個客戶端,所述客戶端標識用ip地址表示,時間長度為I分鐘,最大限額數(shù)為100。
[0081]基于上述應用場景,所述客戶端向上述任一應用服務器發(fā)送服務請求,應用服務器從服務請求中獲取該客戶端的ip地址,并向限額控制服務器發(fā)送限額控制請求,所述限額控制請求攜帶有所述客戶端的ip地址;由限額控制服務器根據(jù)所述客戶端的ip地址統(tǒng)一判斷所述客戶端的當前請求次數(shù)N是否已經(jīng)超過最大限額數(shù)100。為便于說明清楚,我們對應用服務器做了區(qū)分,并結合圖5說明如下。
[0082]第一種情形是:
[0083]客戶端向應用服務器A發(fā)送業(yè)務服務請求,應用服務器A從所述業(yè)務服務請求中獲取該客戶端的ip地址;
[0084]應用服務器A向限額控制服務器發(fā)送限額控制請求,所述限額控制請求攜帶有所述客戶端的ip地址;
[0085]限額控制服務器首先判斷所述客戶端的ip地址是否存在,
[0086]如果不存在,限額控制服務器在客戶端標識中保存所述客戶端的標識信息,并將請求次數(shù)置為1,同時記錄當前時間為第一次請求時間,并向應用服務器A返回未超過限額指示;
[0087]應用服務器A根據(jù)接收到的未超過限額指示,對客戶端的業(yè)務服務請求進行業(yè)務處理,并向客戶端返回處理結果。
[0088]第二種情形是:
[0089]客戶端向應用服務器B發(fā)送業(yè)務服務請求,應用服務器B從所述業(yè)務服務請求中獲取該客戶端的ip地址;
[0090]應用服務器B向限額控制服務器發(fā)送限額控制請求,所述限額控制請求攜帶有所述客戶端的ip地址;
[0091]限額控制服務器首先判斷所述客戶端的ip地址是否存在,
[0092]如果存在,將當前時間減去預存的第一次請求時間得到的時間差值與預設的時間長度I分鐘進行比較,
[0093]如果大于預設的時間長度I分鐘,將請求次數(shù)N置為1,同時記錄當前時間為第一次請求時間,并向應用服務器B返回未超過限額指示;
[0094]應用服務器B根據(jù)接收到的未超過限額指示,對客戶端的業(yè)務服務請求進行業(yè)務處理,并向客戶端返回處理結果。
[0095]第三種情形是:
[0096]客戶端向應用服務器C發(fā)送業(yè)務服務請求,應用服務器C從所述業(yè)務服務請求中獲取該客戶端的ip地址;
[0097]應用服務器C向限額控制服務器發(fā)送限額控制請求,所述限額控制請求攜帶有所述客戶端的ip地址;
[0098]限額控制服務器首先判斷所述客戶端的ip地址是否存在,
[0099]如果存在,將當前時間減去預存的第一次請求時間得到的時間差值與預設的時間長度I分鐘進行比較,
[0100]如果所述時間差值小于等于預設的時間長度I分鐘,將請求次數(shù)N加I后與預設的最大限額數(shù)100比較,
[0101]如果小于等于最大限100,向應用服務器C返回未超過限額指示;
[0102]應用服務器C根據(jù)接收到的未超過限額指示,對客戶端的服務請求進行業(yè)務處理,并向客戶端返回處理結果。
[0103]第四種情形是:
[0104]客戶端向應用服務器D發(fā)送業(yè)務服務請求,應用服務器D從所述業(yè)務服務請求中獲取該客戶端的ip地址;
[0105]應用服務器D向限額控制服務器發(fā)送限額控制請求,所述限額控制請求攜帶有所述客戶端的ip地址;
[0106]限額控制服務器首先判斷所述客戶端的ip地址是否存在,
[0107]如果存在,將當前時間減去預存的第一次請求時間得到的時間差值與預設的時間長度I分鐘進行比較,
[0108]如果所述時間差值小于等于預設的時間長度I分鐘,將請求次數(shù)N加I后與預設的最大限額數(shù)100比較,
[0109]如果大于最大限額數(shù)100,向應用服務器D返回超過限額數(shù)指示;
[0110]應用服務器D根據(jù)接收到的超過限額數(shù)指示,向客戶端返回錯誤信息響應。
[0111]綜上所述,本發(fā)明提供的限額控制方法及分布式限額控制系統(tǒng),當分布式系統(tǒng)中的任一應用服務器收到客戶端的業(yè)務服務請求時,通過向限額控制服務器發(fā)送限額控制請求,由所述限額控制服務器統(tǒng)一判斷所述客戶端的當前請求次數(shù)是否已經(jīng)超過最大限額,并向應用服務器返回超過限額數(shù)指示或者未超過限額數(shù)指示,應用服務器根據(jù)限額控制服務器返回的是否超過限額指示,對客戶端的業(yè)務服務請求或進行業(yè)務處理并返回處理結果或返回錯誤信息響應至所述客戶端,從而達到對客戶端用戶限額進行精準控制的目的。本發(fā)明實施例對均勻接收客戶端請求與隨機接收客戶端請求的分布式系統(tǒng)都適用。
[0112]以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內。
【主權項】
1.一種限額控制方法,其特征在于,應用于分布式系統(tǒng)中,所述方法包括: 應用服務器接收客戶端發(fā)送的業(yè)務服務請求,向限額控制服務器發(fā)送限額控制請求; 所述限額控制服務器根據(jù)所述限額控制請求判斷所述業(yè)務服務請求是否為所述客戶端的首次業(yè)務服務請求; 如果是首次業(yè)務服務請求,所述限額控制服務器返回未超過限額指示至所述應用服務器; 如果不是首次業(yè)務服務請