專利名稱:一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本 發(fā)明涉及多業(yè)務(wù)服務(wù)器的管理技術(shù),尤其涉及一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法及裝置。
背景技術(shù):
目前,在服務(wù)器集群的負(fù)載均衡方面有很多技術(shù)研究,但是,在實(shí)際應(yīng)用中,服務(wù)器總會(huì)在極端情況下達(dá)到負(fù)載上限。過(guò)載保護(hù)就是用于保證服務(wù)器在達(dá)到負(fù)載上限時(shí)仍然能夠繼續(xù)工作,維持服務(wù)器的吞吐量穩(wěn)定,不將前端突發(fā)事件影響傳遞到服務(wù)器。現(xiàn)有的服務(wù)器過(guò)載保護(hù)技術(shù)中,提出一種采用多個(gè)工作負(fù)載管理器來(lái)分別處理不同優(yōu)先級(jí)別請(qǐng)求方法:當(dāng)服務(wù)器負(fù)載達(dá)到一定上限時(shí),拒絕低優(yōu)先級(jí)的服務(wù)請(qǐng)求,只處理高優(yōu)先級(jí)的請(qǐng)求。在實(shí)際的互聯(lián)網(wǎng)應(yīng)用中,除了系統(tǒng)運(yùn)營(yíng)維護(hù)所發(fā)出的控制請(qǐng)求,每個(gè)用戶都是權(quán)利對(duì)等的,他們的請(qǐng)求都應(yīng)該具有相同的優(yōu)先級(jí)別。因此,上述方法并不能清晰正確的劃分請(qǐng)求優(yōu)先級(jí),并不能起到過(guò)載保護(hù)的效果,反而會(huì)導(dǎo)致服務(wù)器吞吐量抖動(dòng)。還有一種服務(wù)器過(guò)載保護(hù)方法,該方法是從優(yōu)化網(wǎng)卡驅(qū)動(dòng)著手,是根據(jù)當(dāng)前機(jī)器的CPU使用率、內(nèi)存使用率等參數(shù)來(lái)衡量服務(wù)器的負(fù)載情況;如果服務(wù)器超過(guò)負(fù)載限制,則網(wǎng)卡驅(qū)動(dòng)拒絕所有建立新TCP連接的請(qǐng)求,來(lái)緩解服務(wù)器壓力。這種方法雖然能夠在一定程度上緩解服務(wù)器負(fù)載,但是對(duì)于突發(fā)的短暫的高訪問(wèn)量情況,將會(huì)引起服務(wù)器的吞吐量抖動(dòng)。同時(shí),以機(jī)器為控制粒度,而不是服務(wù),這將使得同一臺(tái)機(jī)器上部署的不同服務(wù)會(huì)因?yàn)槟骋粋€(gè)服務(wù)異常而都不能正常工作。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法及裝置,能夠基于滑動(dòng)窗口的過(guò)載控制較好的控制業(yè)務(wù)突發(fā)訪問(wèn)量對(duì)服務(wù)器的影響。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:本發(fā)明提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法,包括:設(shè)置表示時(shí)間段的滑動(dòng)窗口 ;所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。上述方法中,所述設(shè)置表示時(shí)間段的滑動(dòng)窗口為:將時(shí)間虛擬為多個(gè)等長(zhǎng)的窗口,每個(gè)窗口表不一個(gè)時(shí)間段;所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求為:所述窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器所接收到的請(qǐng)求,并維護(hù)一個(gè)當(dāng)前窗口范圍,根據(jù)所述當(dāng)前窗口范圍進(jìn)行單次的負(fù)載檢測(cè),且每次負(fù)載檢測(cè)后,所述當(dāng)前窗口范圍根據(jù)上一次負(fù)載檢測(cè)的時(shí)間點(diǎn)的變化進(jìn)行滑動(dòng)。上述方法中,所述時(shí)間段的長(zhǎng)度根據(jù)不同的業(yè)務(wù)需求進(jìn)行動(dòng)態(tài)配置,所述當(dāng)前窗口范圍根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)進(jìn)行設(shè)置。上述方法中,該方法還包括:根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容。上述方法中,所述根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容為:對(duì)于磁盤帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)磁盤I/O的次數(shù);對(duì)于CPU消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)累計(jì)消耗的時(shí)鐘周期數(shù);對(duì)于網(wǎng)絡(luò)帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)的流量。上述方法中,所述根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài)為:根據(jù)當(dāng)前滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求,檢測(cè)新的請(qǐng)求到來(lái)后服務(wù)器當(dāng)前的負(fù)載狀態(tài);如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)位于同一個(gè)窗口內(nèi),則將該窗口內(nèi)的計(jì)數(shù)加I;如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)不是位于同一個(gè)窗口內(nèi),將該窗口內(nèi)的計(jì)數(shù)值清零;對(duì)計(jì)數(shù)值進(jìn)行處理后,判斷窗口內(nèi)的計(jì)數(shù)值是否超過(guò)服務(wù)器處理請(qǐng)求的峰值。上述方法中,所述根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理為:如果窗口內(nèi)的計(jì)數(shù)值超過(guò)服務(wù)器處理請(qǐng)求的峰值,拒絕新的請(qǐng)求,服務(wù)器不對(duì)該請(qǐng)求進(jìn)行處理;如果窗口內(nèi)的計(jì)數(shù)值沒(méi)有超過(guò)服務(wù)器處理請(qǐng)求的峰值,服務(wù)器對(duì)該請(qǐng)求進(jìn)行處理。本發(fā)明還提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置,包括:設(shè)置單元、滑動(dòng)窗口單元、接收單元、處理單元;其中,設(shè)置單元,用于表示時(shí)間段的滑動(dòng)窗口 ;滑動(dòng)窗口單元,用于記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;接收單元,用于收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài);處理單元,用于根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。上述裝置中,所述設(shè)置單元還用于,根據(jù)不同的業(yè)務(wù)需求動(dòng)態(tài)配置時(shí)間段的長(zhǎng)度,根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)設(shè)置當(dāng)前窗口范圍。上述裝置中,所述設(shè)置單元還用于,根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容。本發(fā)明提供的基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法及裝置,設(shè)置表示時(shí)間段的滑動(dòng)窗口,所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理,這樣,基于滑動(dòng)窗口機(jī)制的過(guò)載控制,能夠較好的控制業(yè)務(wù)突發(fā)訪問(wèn)量對(duì)服務(wù)器的影響;此外,本發(fā)明還能夠維持服務(wù)器的吞吐量在一定的水平,避免造成系統(tǒng)吞吐量的抖動(dòng)。
圖1是本發(fā)明實(shí)現(xiàn)基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法的流程示意圖;圖2是本發(fā)明滑動(dòng)窗口的示例圖3是本發(fā)明實(shí)現(xiàn)基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明的基本思想是:設(shè)置表示時(shí)間段的滑動(dòng)窗口,所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。下面通過(guò)附圖及具體實(shí)施例對(duì)本發(fā)明再做進(jìn)一步的詳細(xì)說(shuō)明。本發(fā)明提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法,圖1是本發(fā)明實(shí)現(xiàn)基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法的流程示意圖,如圖1所示,該方法包括以下步驟:步驟101,設(shè)置表示時(shí)間段的滑動(dòng)窗口,該滑動(dòng)窗口記錄該時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;具體的,如圖2所示,沿著圖2中箭頭所指的時(shí)間軸的方向,將流逝的時(shí)間虛擬成多個(gè)等長(zhǎng)的窗口,每個(gè)虛擬的窗口都表示一個(gè)時(shí)間段;其中,所述時(shí)間段的長(zhǎng)度可以根據(jù)不同的業(yè)務(wù)需求來(lái)動(dòng)態(tài)配置,例如,可以是lms,也可以是Is等,時(shí)間段的長(zhǎng)度越小,越能夠精確的描述在某個(gè)時(shí)間段內(nèi)的真實(shí)的服務(wù)器的負(fù)載狀態(tài),更具有實(shí)時(shí)性。窗口記錄對(duì)應(yīng)的一個(gè)時(shí)間段內(nèi)服務(wù)器所接收到的請(qǐng)求,但不是所有的窗口內(nèi)的請(qǐng)求都會(huì)被用來(lái)作為檢測(cè)負(fù)載狀態(tài)的依據(jù),因?yàn)榛ヂ?lián)網(wǎng)各個(gè)時(shí)間段的訪問(wèn)量之間的相關(guān)性較小,一段時(shí)間以前的服務(wù)器接收的請(qǐng)求已經(jīng)處理完畢,并不會(huì)造成服務(wù)器的負(fù)載,因此,只需要根據(jù)最近時(shí)間段的訪問(wèn)次數(shù)來(lái)評(píng)估服務(wù)器的負(fù)載情況,即:只需要維護(hù)一個(gè)當(dāng)前窗口范圍,該當(dāng)前窗口范圍在整個(gè)時(shí)間軸內(nèi),能夠?yàn)閱未蔚呢?fù)載檢測(cè)提供依據(jù),可以根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)設(shè)置當(dāng)前窗口范圍。例如,當(dāng)前窗口范圍有100個(gè)格子,每個(gè)格子的時(shí)間長(zhǎng)度為I秒,那么,每次負(fù)載檢測(cè)都將使用過(guò)去100秒的所有記錄作為依據(jù),利用該方案,能夠避免因?yàn)樵趩蝹€(gè)窗口內(nèi)的抖動(dòng)造成的整個(gè)服務(wù)器吞吐量的抖動(dòng);如圖2所示,tl表示上一次負(fù)載檢測(cè)的時(shí)間點(diǎn),每次負(fù)載檢測(cè)后,窗口會(huì)根據(jù)tl的變化沿時(shí)間軸方向滑動(dòng),因此,上述窗口為滑動(dòng)窗口?;谟布?qū)動(dòng)層的過(guò)載保護(hù)方案,過(guò)載保護(hù)粒度為整臺(tái)機(jī)器,這種情況下可能使得同一臺(tái)機(jī)器上部署的不同服務(wù)會(huì)因?yàn)槟骋粋€(gè)服務(wù)異常而都不能正常工作。比如在特定時(shí)亥|J,某一個(gè)磁盤帶寬消耗性的服務(wù)消耗了大量的磁盤帶寬達(dá)到規(guī)定的上限,網(wǎng)卡此時(shí)就不再接受其他的TCP連接,拒絕對(duì)外服務(wù),實(shí)際上對(duì)于CPU消耗性的服務(wù)仍然應(yīng)該被處理。因此缺乏足夠的靈活性。而基于滑動(dòng)窗口的過(guò)載保護(hù)方案,除了能夠進(jìn)行單個(gè)窗口范圍和單個(gè)窗口對(duì)應(yīng)時(shí)間段的動(dòng)態(tài)配置外,還可以根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容,例如,對(duì)于磁盤帶寬消耗型的服務(wù),窗口可以記錄當(dāng)前時(shí)間段內(nèi)磁盤I/O的次數(shù),對(duì)于CPU消耗型的服務(wù),窗口可以記錄當(dāng)前時(shí)間段內(nèi)累計(jì)消耗的時(shí)鐘周期數(shù),對(duì)于網(wǎng)絡(luò)帶寬消耗型的務(wù),窗口可以記錄當(dāng)前時(shí)間段內(nèi)的流量;通過(guò)靈活的為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容,可以根據(jù)不同的服務(wù)實(shí)行不同的過(guò)載保護(hù)的策略,實(shí)現(xiàn)以服務(wù)為過(guò)載保護(hù)粒度。步驟102,服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)當(dāng)前滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求,檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理;具體的,每個(gè)窗口可以記錄對(duì)應(yīng)時(shí)間段內(nèi)的訪問(wèn)次數(shù),S卩:檢測(cè)負(fù)載狀態(tài)的次數(shù),由于每次檢測(cè)負(fù)載狀態(tài)是在服務(wù)器接收到請(qǐng)求后,因此,服務(wù)器接收的請(qǐng)求的數(shù)量就等于檢測(cè)負(fù)載的次數(shù);服務(wù)器收到新的請(qǐng)求時(shí),首先根據(jù)當(dāng)前滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求,檢測(cè)新的請(qǐng)求到來(lái)后服務(wù)器當(dāng)前的負(fù)載狀態(tài),如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)位于同一個(gè)窗口內(nèi),則將該窗口內(nèi)的計(jì)數(shù)加I ;對(duì)計(jì)數(shù)值進(jìn)行處理后,進(jìn)一步的,判斷窗口內(nèi)的計(jì)數(shù)值是否超過(guò)服務(wù)器處理請(qǐng)求的峰值,如果超過(guò),則拒絕這次請(qǐng)求,即:只接收請(qǐng)求,但不處理該請(qǐng)求;如果不超過(guò),則服務(wù)器對(duì)該請(qǐng)求進(jìn)行處理;如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)不是位于同一個(gè)窗口內(nèi),則將該窗口內(nèi)的計(jì)數(shù)值清零,因?yàn)楸敬螜z測(cè)負(fù)載狀態(tài)之前服務(wù)器所接收的請(qǐng)求,并不能反映服務(wù)器當(dāng)前的負(fù)載狀態(tài);對(duì)計(jì)數(shù)值進(jìn)行清零處理后,進(jìn)一步的,判斷窗口內(nèi)的計(jì)數(shù)值是否超過(guò)服務(wù)器處理請(qǐng)求的峰值,如果超過(guò),則拒絕這次請(qǐng)求,如果不超過(guò),則服務(wù)器對(duì)該請(qǐng)求進(jìn)行處理。本發(fā)明中,當(dāng)服務(wù)器的負(fù)載超過(guò)服務(wù)器能夠負(fù)擔(dān)的請(qǐng)求時(shí),最多經(jīng)過(guò)一個(gè)窗口的時(shí)間后,服務(wù)器就可以正常的處理一定量的請(qǐng)求,如果一個(gè)窗口對(duì)應(yīng)時(shí)間段比較短,以毫秒為單位,反映在業(yè)務(wù)層的表現(xiàn)就是服務(wù)器拒絕了大量的請(qǐng)求中的某些請(qǐng)求,而且服務(wù)器的吞吐量可以恒定在一個(gè)范圍內(nèi),而不是吞吐量突增突減的抖動(dòng)形式。為實(shí)現(xiàn)上述方法,本發(fā)明還提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置,圖3是本發(fā)明實(shí)現(xiàn)基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置的結(jié)構(gòu)示意圖,如圖3所示,該裝置包括:設(shè)置單元31、滑動(dòng)窗口單元32、接收單元33、處理單元34 ;其中,設(shè)置單元31,用于表示時(shí)間段的滑動(dòng)窗口 ;滑動(dòng)窗口單元32,用于記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;接收單元33,用于收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài);處理單元34,用于根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。所述設(shè)置單元31還用于,根據(jù)不同的業(yè)務(wù)需求動(dòng)態(tài)配置時(shí)間段的長(zhǎng)度,根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)設(shè)置當(dāng)前窗口范圍。所述設(shè)置單元31還用于,根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容。所述設(shè)置單元31設(shè)置表示時(shí)間段的滑動(dòng)窗口為:將時(shí)間虛擬為多個(gè)等長(zhǎng)的窗口,每個(gè)窗口表不一個(gè)時(shí)間段;所述滑動(dòng)窗口單元32記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求為:所述窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器所接收到的請(qǐng)求,并維護(hù)一個(gè)當(dāng)前窗口范圍,根據(jù)所述當(dāng)前窗口范圍進(jìn)行單次的負(fù)載檢測(cè),且每次負(fù)載檢測(cè)后,所述當(dāng)前窗口范圍根據(jù)上一次負(fù)載檢測(cè)的時(shí)間點(diǎn)的變化進(jìn)行滑動(dòng)。所述設(shè)置單元31根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容為:對(duì)于磁盤帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)磁盤I/o的次數(shù);對(duì)于CPU消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)累計(jì)消耗的時(shí)鐘周期數(shù);對(duì)于網(wǎng)絡(luò)帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)的流量。所述接收單元33根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài)為:根據(jù)當(dāng)前滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求,檢測(cè)新的請(qǐng)求到來(lái)后服務(wù)器當(dāng)前的負(fù)載狀態(tài);如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)位于同一個(gè)窗口內(nèi),則將該窗口內(nèi)的計(jì)數(shù)加I;如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)不是位于同一個(gè)窗口內(nèi),將該窗口內(nèi)的計(jì)數(shù)值清零;對(duì)計(jì)數(shù)值進(jìn)行處理后,進(jìn)一步的,判斷窗口內(nèi)的計(jì)數(shù)值是否超過(guò)服務(wù)器處理請(qǐng)求的峰值。相應(yīng)的,所述處理單元34根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理為:如果窗口內(nèi)的計(jì)數(shù)值超過(guò)服務(wù)器處理請(qǐng)求的峰值,拒絕新的請(qǐng)求,不對(duì)該請(qǐng)求進(jìn)行處理;如果窗口內(nèi)的計(jì)數(shù)值沒(méi)有超過(guò)服務(wù)器處理請(qǐng)求的峰值,對(duì)該請(qǐng)求進(jìn)行處理。本發(fā)明的技術(shù)方案能夠應(yīng)用于申請(qǐng)人自研制的海量分布式存儲(chǔ)系統(tǒng)TFS,該系統(tǒng)中承載有眾多的業(yè)務(wù)數(shù)據(jù),TFS服務(wù)器的穩(wěn)定對(duì)承載的業(yè)務(wù)的運(yùn)行至關(guān)重要,利用上述技術(shù)方案能夠幫助TFS服務(wù)器避免前端業(yè)務(wù)異常訪問(wèn)情況對(duì)服務(wù)器的影響,從而提高服務(wù)器的穩(wěn)定性。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法,其特征在于, 設(shè)置表示時(shí)間段的滑動(dòng)窗口; 所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求; 服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述設(shè)置表示時(shí)間段的滑動(dòng)窗口為:將時(shí)間虛擬為多個(gè)等長(zhǎng)的窗口,每個(gè)窗口表示一個(gè)時(shí)間段; 所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求為:所述窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器所接收到的請(qǐng)求,并維護(hù)一個(gè)當(dāng)前窗口范圍,根據(jù)所述當(dāng)前窗口范圍進(jìn)行單次的負(fù)載檢測(cè),且每次負(fù)載檢測(cè)后,所述當(dāng)前窗口范圍根據(jù)上一次負(fù)載檢測(cè)的時(shí)間點(diǎn)的變化進(jìn)行滑動(dòng)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述時(shí)間段的長(zhǎng)度根據(jù)不同的業(yè)務(wù)需求進(jìn)行動(dòng)態(tài)配置,所述當(dāng)前窗口范圍根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)進(jìn)行設(shè)置。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,該方法還包括:根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容為: 對(duì)于磁盤帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)磁盤I/O的次數(shù); 對(duì)于CPU消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)累計(jì)消耗的時(shí)鐘周期數(shù); 對(duì)于網(wǎng)絡(luò)帶寬消耗型的服務(wù),窗口記錄當(dāng)前時(shí)間段內(nèi)的流量。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài)為: 根據(jù)當(dāng)前滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求,檢測(cè)新的請(qǐng)求到來(lái)后服務(wù)器當(dāng)前的負(fù)載狀態(tài);如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)位于同一個(gè)窗口內(nèi),則將該窗口內(nèi)的計(jì)數(shù)加I ;如果上一次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)與本次檢測(cè)負(fù)載狀態(tài)的時(shí)間點(diǎn)不是位于同一個(gè)窗口內(nèi),將該窗口內(nèi)的計(jì)數(shù)值清零;對(duì)計(jì)數(shù)值進(jìn)行處理后,判斷窗口內(nèi)的計(jì)數(shù)值是否超過(guò)服務(wù)器處理請(qǐng)求的峰值。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理為: 如果窗口內(nèi)的計(jì)數(shù)值超過(guò)服務(wù)器處理請(qǐng)求的峰值,拒絕新的請(qǐng)求,服務(wù)器不對(duì)該請(qǐng)求進(jìn)行處理;如果窗口內(nèi)的計(jì)數(shù)值沒(méi)有超過(guò)服務(wù)器處理請(qǐng)求的峰值,服務(wù)器對(duì)該請(qǐng)求進(jìn)行處理。
8.一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置,其特征在于,該裝置包括:設(shè)置單元、滑動(dòng)窗口單元、接收單元、處理單元;其中, 設(shè)置單元,用于表示時(shí)間段的滑動(dòng)窗口 ; 滑動(dòng)窗口單元,用于記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求; 接收單元,用于收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài); 處理單元,用于根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述設(shè)置單元還用于,根據(jù)不同的業(yè)務(wù)需求動(dòng)態(tài)配置時(shí)間段的長(zhǎng)度,根據(jù)互聯(lián)網(wǎng)請(qǐng)求的延時(shí)設(shè)置當(dāng)前窗口范圍。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述設(shè)置單元還用于,根據(jù)不同的業(yè)務(wù)特性為每個(gè)窗口配置記錄的請(qǐng)求內(nèi)容。`
全文摘要
本發(fā)明公開一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)方法,包括設(shè)置表示時(shí)間段的滑動(dòng)窗口,所述滑動(dòng)窗口記錄對(duì)應(yīng)時(shí)間段內(nèi)服務(wù)器接收的請(qǐng)求;服務(wù)器收到新的請(qǐng)求時(shí),根據(jù)滑動(dòng)窗口記錄的服務(wù)器接收的請(qǐng)求檢測(cè)服務(wù)器當(dāng)前的負(fù)載狀態(tài),根據(jù)檢測(cè)結(jié)果判斷是否對(duì)請(qǐng)求進(jìn)行處理;本發(fā)明還提供一種基于滑動(dòng)窗口的服務(wù)器過(guò)載保護(hù)裝置。根據(jù)本發(fā)明的技術(shù)方案,能夠基于滑動(dòng)窗口的過(guò)載控制較好的控制業(yè)務(wù)突發(fā)訪問(wèn)量對(duì)服務(wù)器的影響。
文檔編號(hào)G06F21/71GK103164663SQ20111041222
公開日2013年6月19日 申請(qǐng)日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者姚明敏, 婁繼冰 申請(qǐng)人:深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司