亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

并發(fā)請(qǐng)求的控制方法及裝置制造方法

文檔序號(hào):6634103閱讀:178來(lái)源:國(guó)知局
并發(fā)請(qǐng)求的控制方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種并發(fā)請(qǐng)求的控制方法及裝置,涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,為解決因并發(fā)數(shù)限制導(dǎo)致的部分訪問(wèn)請(qǐng)求被拒的問(wèn)題而發(fā)明。本發(fā)明的方法包括:當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);若所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限,則加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。本發(fā)明主要應(yīng)用于SQL數(shù)據(jù)庫(kù)系統(tǒng)中。
【專利說(shuō)明】并發(fā)請(qǐng)求的控制方法及裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及一種并發(fā)請(qǐng)求的控制方法及裝置。

【背景技術(shù)】
[0002]在PostgresQL、MySQL等數(shù)據(jù)庫(kù)系統(tǒng)中,客戶端訪問(wèn)數(shù)據(jù)庫(kù)的請(qǐng)求由介于客戶端與數(shù)據(jù)庫(kù)服務(wù)器之間的應(yīng)用服務(wù)器代為轉(zhuǎn)發(fā)。應(yīng)用服務(wù)器將客戶端發(fā)送的訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器,接收并向客戶端下發(fā)數(shù)據(jù)庫(kù)服務(wù)器返回的數(shù)據(jù)內(nèi)容。
[0003]通常,網(wǎng)內(nèi)客戶端的訪問(wèn)請(qǐng)求是隨機(jī)發(fā)起的,當(dāng)同時(shí)發(fā)起訪問(wèn)請(qǐng)求的客戶端過(guò)多時(shí)(例如同時(shí)發(fā)起500個(gè)請(qǐng)求),數(shù)據(jù)庫(kù)負(fù)荷較重,容易發(fā)生崩潰。因此,對(duì)訪問(wèn)請(qǐng)求數(shù)量進(jìn)行合理控制就成為保障數(shù)據(jù)庫(kù)運(yùn)行效率的一種必然手段。
[0004]目前,實(shí)際應(yīng)用中主要通過(guò)設(shè)置并發(fā)數(shù)上限的方式對(duì)客戶端的訪問(wèn)請(qǐng)求進(jìn)行限制。在數(shù)據(jù)庫(kù)系統(tǒng)啟動(dòng)運(yùn)行時(shí),網(wǎng)絡(luò)側(cè)加載人工設(shè)定的并發(fā)數(shù)上限(例如180),當(dāng)同一時(shí)刻上訪問(wèn)請(qǐng)求的并發(fā)數(shù)超過(guò)并發(fā)數(shù)上限時(shí),應(yīng)用服務(wù)器對(duì)超出部分的訪問(wèn)請(qǐng)求予以拒絕。這種方式雖然可以對(duì)數(shù)據(jù)庫(kù)負(fù)荷進(jìn)行有效調(diào)節(jié),但是訪問(wèn)請(qǐng)求被拒的客戶端將無(wú)法獲得請(qǐng)求的數(shù)據(jù)內(nèi)容。


【發(fā)明內(nèi)容】

[0005]鑒于上述問(wèn)題,本發(fā)明提供了一種并發(fā)請(qǐng)求的控制方法及裝置,能夠解決現(xiàn)有技術(shù)中因并發(fā)數(shù)限制導(dǎo)致的部分訪問(wèn)請(qǐng)求被拒的問(wèn)題。
[0006]為解決上述技術(shù)問(wèn)題,一方面,本發(fā)明提供了一種并發(fā)請(qǐng)求的控制方法,包括:
[0007]當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;
[0008]定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0009]若所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限,則加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0010]另一方面,本發(fā)明還提供了一種并發(fā)請(qǐng)求的控制裝置,包括:
[0011]存儲(chǔ)單元,用于當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;
[0012]查詢單元,用于定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0013]處理單元,用于當(dāng)所述查詢單元查詢所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述存儲(chǔ)單元緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0014]借由上述技術(shù)方案,本發(fā)明提供的并發(fā)請(qǐng)求的控制方法及裝置,能夠?qū)Τ霾l(fā)數(shù)上限的訪問(wèn)請(qǐng)求進(jìn)行緩存,當(dāng)并發(fā)數(shù)空閑時(shí),將緩存的訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行處理。與現(xiàn)有技術(shù)中拒絕超出部分的訪問(wèn)請(qǐng)求相比,本發(fā)明能夠?qū)⒉⑿刑幚淼拇罅吭L問(wèn)請(qǐng)求分解到時(shí)序上進(jìn)行串行處理,從而保障每個(gè)客戶端的數(shù)據(jù)訪問(wèn)權(quán)利。
[0015]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。

【專利附圖】

【附圖說(shuō)明】
[0016]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0017]圖1示出了本發(fā)明實(shí)施例中一種并發(fā)請(qǐng)求的控制方法的流程圖;
[0018]圖2示出了本發(fā)明實(shí)施例中SQL語(yǔ)句列表的示意圖;
[0019]圖3示出了本發(fā)明實(shí)施例中另一種并發(fā)請(qǐng)求的控制方法的流程圖;
[0020]圖4示出了本發(fā)明實(shí)施例中訪問(wèn)請(qǐng)求隨機(jī)搶占的示意圖;
[0021 ]圖5示出了本發(fā)明實(shí)施例中隨機(jī)選取訪問(wèn)請(qǐng)求的示意圖;
[0022]圖6示出了本發(fā)明實(shí)施例中又一種并發(fā)請(qǐng)求的控制方法的流程圖;
[0023]圖7示出了本發(fā)明實(shí)施例中不同類型隊(duì)列的示意圖;
[0024]圖8示出了本發(fā)明實(shí)施例中一種并發(fā)請(qǐng)求的控制裝置的結(jié)構(gòu)示意圖;
[0025]圖9示出了本發(fā)明實(shí)施例中另一種并發(fā)請(qǐng)求的控制裝置的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0026]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0027]為防止超出并發(fā)數(shù)上限的訪問(wèn)請(qǐng)求被拒絕,本發(fā)明實(shí)施例提供了一種并發(fā)請(qǐng)求的控制方法,如圖1所示,該方法包括:
[0028]101、當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),服務(wù)器對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存。
[0029]本方法的執(zhí)行主體為應(yīng)用服務(wù)器,后續(xù)簡(jiǎn)稱服務(wù)器。在客戶端訪問(wèn)數(shù)據(jù)庫(kù)的過(guò)程中,服務(wù)器查詢當(dāng)前時(shí)刻上的同時(shí)處理的訪問(wèn)請(qǐng)求數(shù)量,獲得實(shí)際并發(fā)數(shù)。當(dāng)實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),表明數(shù)據(jù)庫(kù)的處理能力已達(dá)到飽和,此時(shí)服務(wù)器對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行本地緩存。
[0030]示例性的,假設(shè)預(yù)設(shè)的并發(fā)數(shù)上限為180,即同一時(shí)刻上數(shù)據(jù)庫(kù)最多允許對(duì)不超過(guò)180條訪問(wèn)請(qǐng)求同時(shí)進(jìn)行訪問(wèn)。當(dāng)某一時(shí)刻上同時(shí)發(fā)起的訪問(wèn)請(qǐng)求為210條時(shí),服務(wù)器將其中的180條訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)給數(shù)據(jù)庫(kù)進(jìn)行響應(yīng),而對(duì)于剩下的30條訪問(wèn)請(qǐng)求,服務(wù)器將其保存在本地緩存中。
[0031]本實(shí)施例中所謂的數(shù)據(jù)庫(kù)處理能力飽和主要是指數(shù)據(jù)庫(kù)為處理訪問(wèn)請(qǐng)求分配的處理資源(例如緩存)已被用滿。通常數(shù)據(jù)庫(kù)除響應(yīng)訪問(wèn)請(qǐng)求外還具有數(shù)據(jù)讀寫、數(shù)據(jù)分析等其他功能,在分配處理資源時(shí)一般不會(huì)將數(shù)據(jù)庫(kù)的所有處理資源都分配給響應(yīng)訪問(wèn)請(qǐng)求之用,因此本實(shí)施例中所指的處理能力飽和程度并不是真正意義上能夠使數(shù)據(jù)庫(kù)癱瘓的飽和程度。
[0032]本實(shí)施例中,在客戶端訪問(wèn)數(shù)據(jù)庫(kù)之前,服務(wù)器需要首先開辟出專用于保存訪問(wèn)請(qǐng)求的緩存空間。服務(wù)器可以在內(nèi)存中開辟該緩存空間,也可以在硬盤中開辟該緩存空間,本實(shí)施例對(duì)此不作限制。此外,緩存空間的大小可以由網(wǎng)管人員根據(jù)經(jīng)驗(yàn)值設(shè)定,也可以由服務(wù)器根據(jù)對(duì)局域網(wǎng)內(nèi)的日常請(qǐng)求數(shù)量或請(qǐng)求語(yǔ)句大小的統(tǒng)計(jì)結(jié)果,自行設(shè)定得出,本實(shí)施例對(duì)此同樣不做限制。
[0033]在緩存超出部分的訪問(wèn)請(qǐng)求時(shí),服務(wù)器可以依據(jù)不同的算法對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行選取。一種可行的實(shí)現(xiàn)方式為,服務(wù)器從當(dāng)前的訪問(wèn)請(qǐng)求中隨機(jī)選取并發(fā)數(shù)上限數(shù)量的訪問(wèn)請(qǐng)求進(jìn)行處理,例如從210條訪問(wèn)請(qǐng)求中隨機(jī)選擇180條訪問(wèn)請(qǐng)求進(jìn)行處理,并對(duì)剩余30條訪問(wèn)請(qǐng)求進(jìn)行緩存?;蛘撸?wù)器也可以根據(jù)訪問(wèn)請(qǐng)求的優(yōu)先級(jí)高低、語(yǔ)句長(zhǎng)度或請(qǐng)求的數(shù)據(jù)類型對(duì)所有訪問(wèn)請(qǐng)求進(jìn)行排序,并從排序后的訪問(wèn)請(qǐng)求中選取并發(fā)數(shù)上限數(shù)量的訪問(wèn)請(qǐng)求進(jìn)行處理。本實(shí)施例不對(duì)服務(wù)器選取訪問(wèn)請(qǐng)求的規(guī)則進(jìn)行限定。
[0034]實(shí)際應(yīng)用中,各個(gè)客戶端上報(bào)訪問(wèn)請(qǐng)求的時(shí)間點(diǎn)通常是隨機(jī)的,鮮有大量客戶端同時(shí)上報(bào)訪問(wèn)請(qǐng)求的情況,因此更加適用于實(shí)際的請(qǐng)求選取方式為:服務(wù)器在接收到某條訪問(wèn)請(qǐng)求時(shí),只要當(dāng)前的實(shí)際并發(fā)數(shù)未達(dá)到并發(fā)數(shù)上限,服務(wù)器就對(duì)接收的訪問(wèn)請(qǐng)求進(jìn)行處理,而當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)達(dá)到并發(fā)數(shù)上限時(shí),服務(wù)器對(duì)接收的訪問(wèn)請(qǐng)求進(jìn)行緩存,即月艮務(wù)器按照發(fā)起先后順序?qū)υL問(wèn)請(qǐng)求進(jìn)行處理緩存。
[0035]需要說(shuō)明的是,服務(wù)器接收到的訪問(wèn)請(qǐng)求是由不同客戶端上報(bào)而來(lái)的,通常同一時(shí)刻上的一個(gè)客戶端只上報(bào)一條訪問(wèn)請(qǐng)求,但實(shí)際應(yīng)用中也不排除客戶端啟動(dòng)多線程同時(shí)上報(bào)多個(gè)訪問(wèn)請(qǐng)求的情況,因此本實(shí)施例中訪問(wèn)請(qǐng)求與客戶端之間的關(guān)系并非一定為一一映射。
[0036]102、服務(wù)器定期查詢當(dāng)前的實(shí)際并發(fā)數(shù)。
[0037]在對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存后,服務(wù)器定期查詢當(dāng)前的實(shí)際并發(fā)數(shù)。由于在執(zhí)行完步驟101后實(shí)際并發(fā)數(shù)已達(dá)到并發(fā)數(shù)上限,服務(wù)器無(wú)法及時(shí)對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行加入處理,因此服務(wù)器需要定期對(duì)并發(fā)數(shù)的“飽和狀態(tài)”進(jìn)行檢查,即定期查詢當(dāng)前的實(shí)際并發(fā)數(shù)。如果當(dāng)前的實(shí)際并發(fā)數(shù)仍等于并發(fā)數(shù)上限,則服務(wù)器重復(fù)執(zhí)行步驟102,在下一時(shí)刻繼續(xù)進(jìn)行查詢,如果當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限(例如因某些訪問(wèn)請(qǐng)求響應(yīng)完畢或響應(yīng)失敗而釋放對(duì)應(yīng)的處理資源),則服務(wù)器執(zhí)行步驟103,利用釋放的處理資源對(duì)緩存的訪問(wèn)請(qǐng)求進(jìn)行處理。
[0038]本實(shí)施例中所謂的定期查詢可以有不同的實(shí)現(xiàn)方式,例如服務(wù)器按照預(yù)設(shè)的時(shí)間間隔周期性查詢,或者根據(jù)網(wǎng)管人員下發(fā)的查詢指令進(jìn)行查詢,或者在緩存的訪問(wèn)請(qǐng)求數(shù)量超過(guò)一定閾值時(shí)進(jìn)行查詢等。其中,對(duì)于周期性查詢的方式而言,本實(shí)施例并不對(duì)具體的時(shí)間間隔進(jìn)行限制,當(dāng)該時(shí)間間隔被設(shè)置為趨近于O時(shí),服務(wù)器可以實(shí)現(xiàn)對(duì)實(shí)際并發(fā)數(shù)的實(shí)時(shí)查詢。
[0039]103、若當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限,則服務(wù)器加入緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0040]若步驟102中查詢的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限,則表明本次查詢時(shí)數(shù)據(jù)庫(kù)釋放了部分處理資源,因此服務(wù)器執(zhí)行步驟103,從緩存中選取保存的訪問(wèn)請(qǐng)求進(jìn)行處理。在從緩存中選取訪問(wèn)請(qǐng)求后,服務(wù)器將其從緩存中清除。
[0041]在選取緩存的訪問(wèn)請(qǐng)求時(shí),服務(wù)器可以根據(jù)釋放的處理資源大小選取部分或全部訪問(wèn)請(qǐng)求進(jìn)行處理。通常,數(shù)據(jù)庫(kù)在處理完一條訪問(wèn)請(qǐng)求后,會(huì)立即釋放該訪問(wèn)請(qǐng)求占用的處理資源,處理完的訪問(wèn)請(qǐng)求越多釋放的處理資源也越多。因此從本質(zhì)上講,服務(wù)器從緩存中選取的訪問(wèn)請(qǐng)求數(shù)量由服務(wù)器查詢實(shí)際并發(fā)數(shù)的間隔時(shí)間長(zhǎng)短決定,間隔時(shí)間越長(zhǎng),數(shù)據(jù)庫(kù)釋放的處理資源越多,服務(wù)器從緩存中選取的訪問(wèn)請(qǐng)求數(shù)量也就越多。
[0042]與步驟101類似的,在從緩存中選取訪問(wèn)請(qǐng)求時(shí),服務(wù)器也可以采用隨機(jī)選取或排序選取的方式進(jìn)行實(shí)現(xiàn),本步驟對(duì)此不再進(jìn)行贅述。
[0043]在執(zhí)行完本步驟之后,服務(wù)器重復(fù)執(zhí)行步驟102及步驟103,對(duì)緩存中的剩余訪問(wèn)請(qǐng)求先后進(jìn)行處理,直至緩存中未再保存任何訪問(wèn)請(qǐng)求為止。
[0044]實(shí)際應(yīng)用中,服務(wù)器在執(zhí)行上述步驟101至步驟103時(shí),局域網(wǎng)內(nèi)的客戶端還會(huì)不斷上報(bào)新的訪問(wèn)請(qǐng)求。對(duì)于此種情況,服務(wù)器將新接收的訪問(wèn)請(qǐng)求直接保存到緩存中等待后續(xù)處理。
[0045]本實(shí)施例中處理訪問(wèn)請(qǐng)求的過(guò)程涉及:將訪問(wèn)請(qǐng)求轉(zhuǎn)發(fā)給數(shù)據(jù)庫(kù),由數(shù)據(jù)庫(kù)對(duì)該請(qǐng)求進(jìn)行響應(yīng),查找其所請(qǐng)求的數(shù)據(jù)內(nèi)容,接收并向客戶端下發(fā)數(shù)據(jù)庫(kù)返回的數(shù)據(jù)內(nèi)容等。
[0046]本實(shí)施例提供的并發(fā)請(qǐng)求的控制方法,能夠?qū)Τ霾l(fā)數(shù)上限的訪問(wèn)請(qǐng)求進(jìn)行緩存,當(dāng)并發(fā)數(shù)空閑時(shí),將緩存的訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行處理。與現(xiàn)有技術(shù)中拒絕超出部分的訪問(wèn)請(qǐng)求相比,本實(shí)施例能夠?qū)⒉⑿刑幚淼拇罅吭L問(wèn)請(qǐng)求分解到時(shí)序上進(jìn)行串行處理,從而保障每個(gè)客戶端的數(shù)據(jù)訪問(wèn)權(quán)利。
[0047]進(jìn)一步的,作為圖1所示方法的一種實(shí)現(xiàn)方式,在本發(fā)明的另一實(shí)施例中,上述步驟101至步驟103的執(zhí)行可以由應(yīng)用服務(wù)器上的ngx模塊(ngx_lua_module)完成。ngx模塊中內(nèi)嵌有Iua解析器,支持高并發(fā)數(shù)、高性能、支持非阻塞的數(shù)據(jù)庫(kù)操作,可以用于Windows系統(tǒng)或Linux系統(tǒng)中。
[0048]在接收到客戶端上報(bào)的訪問(wèn)請(qǐng)求后,ngx模塊為每個(gè)訪問(wèn)請(qǐng)求分別建立一個(gè)協(xié)程,后續(xù)對(duì)請(qǐng)求的緩存及處理均基于協(xié)程進(jìn)行。與現(xiàn)有技術(shù)中通過(guò)線程發(fā)起訪問(wèn)請(qǐng)求不同的是,本實(shí)施例中采用協(xié)程發(fā)起訪問(wèn)請(qǐng)求,相對(duì)線程而言,協(xié)程只涉及一個(gè)主進(jìn)程,沒有額外的線程,不會(huì)像線程一樣占用服務(wù)器或數(shù)據(jù)庫(kù)的CPU資源,因此本實(shí)施例相對(duì)現(xiàn)有技術(shù)而言,不會(huì)因并發(fā)數(shù)的增加而影響到數(shù)據(jù)庫(kù)的處理效率。
[0049]進(jìn)一步的,作為對(duì)圖1步驟102的細(xì)化,在本發(fā)明的另一實(shí)施例中,服務(wù)器可以通過(guò)不同的方式實(shí)現(xiàn)對(duì)當(dāng)前實(shí)際并發(fā)數(shù)的查詢,具體的:
[0050]方式一
[0051]通過(guò)請(qǐng)求列表查詢
[0052]在對(duì)訪問(wèn)請(qǐng)求進(jìn)行處理時(shí),服務(wù)器會(huì)將訪問(wèn)請(qǐng)求的語(yǔ)句寫入到請(qǐng)求列表中,當(dāng)該訪問(wèn)請(qǐng)求處理完畢后,將該請(qǐng)求對(duì)應(yīng)的語(yǔ)句從請(qǐng)求列表中清除。因此服務(wù)器可以定期對(duì)請(qǐng)求列表中的語(yǔ)句數(shù)量進(jìn)行統(tǒng)計(jì),通過(guò)請(qǐng)求列表中記錄的語(yǔ)句數(shù)量獲得當(dāng)前的實(shí)際并發(fā)數(shù)。
[0053]實(shí)際應(yīng)用中,不同數(shù)據(jù)庫(kù)的請(qǐng)求語(yǔ)句通常不同,以PostgresQL或MySQL數(shù)據(jù)庫(kù)使用的SQL語(yǔ)句為例,服務(wù)器記錄的請(qǐng)求列表可以如圖2所示。需要說(shuō)明的是,圖2僅用于對(duì)一種可能的實(shí)現(xiàn)方式進(jìn)行說(shuō)明,其中的格式或具體參數(shù)均為示例性的,不作為對(duì)請(qǐng)求列表實(shí)際形式的限定。
[0054]方式二
[0055]通過(guò)計(jì)數(shù)器查詢
[0056]服務(wù)器可以為訪問(wèn)請(qǐng)求的處理增加一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器用于在實(shí)際并發(fā)數(shù)發(fā)生變化時(shí)進(jìn)行增減計(jì)數(shù)。當(dāng)一個(gè)新的訪問(wèn)請(qǐng)求被加入處理時(shí),該計(jì)數(shù)器加1,當(dāng)一個(gè)訪問(wèn)請(qǐng)求處理完成時(shí),該計(jì)數(shù)器減I。服務(wù)器可以通過(guò)對(duì)計(jì)數(shù)器的定期讀取,獲得當(dāng)前的實(shí)際并發(fā)數(shù)。
[0057]下面,本發(fā)明將通過(guò)其他幾個(gè)實(shí)施例對(duì)圖1中步驟103進(jìn)行說(shuō)明。
[0058]在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)庫(kù)釋放處理資源時(shí),服務(wù)器可以通過(guò)隨機(jī)搶占的方式將緩存的訪問(wèn)請(qǐng)求加入處理。如圖3所示,該方案包括:
[0059]301、服務(wù)器為每個(gè)緩存的訪問(wèn)請(qǐng)求獨(dú)立查詢當(dāng)前的實(shí)際并發(fā)數(shù)。
[0060]作為對(duì)圖1步驟102的細(xì)化,服務(wù)器為緩存的每一個(gè)訪問(wèn)請(qǐng)求分別單獨(dú)進(jìn)行定期查詢。如前所述,服務(wù)器為每一個(gè)訪問(wèn)請(qǐng)求都單獨(dú)建立一個(gè)協(xié)程,本步驟中服務(wù)器即是基于各個(gè)訪問(wèn)請(qǐng)求的協(xié)程實(shí)現(xiàn)查詢的,因此,實(shí)際并發(fā)數(shù)的查詢是以訪問(wèn)請(qǐng)求為單位獨(dú)立進(jìn)行的。示例性的,假設(shè)服務(wù)器緩存有12條訪問(wèn)請(qǐng)求,那么服務(wù)器每次需要分別進(jìn)行12次查詢。
[0061]對(duì)于周期性查詢的方式,服務(wù)器可以針對(duì)不同的訪問(wèn)請(qǐng)求采用不同的時(shí)間間隔,也可以針對(duì)所有的訪問(wèn)請(qǐng)求采用統(tǒng)一的時(shí)間間隔。本實(shí)施例中查詢時(shí)間間隔的取值范圍可以為Ims至100ms,其中,較為典型的取值包括:5ms、10ms、30ms、50ms、90ms等。
[0062]需要說(shuō)明的是,對(duì)于不同的訪問(wèn)請(qǐng)求,雖然服務(wù)器按照相同的時(shí)間間隔查詢,但是每個(gè)訪問(wèn)請(qǐng)求的查詢時(shí)間點(diǎn)并不一定相同,這是由于:不同客戶端上報(bào)訪問(wèn)請(qǐng)求的時(shí)間是隨機(jī)的,因此服務(wù)器接收不同訪問(wèn)請(qǐng)求的時(shí)間點(diǎn)也是隨機(jī)的,由此各條訪問(wèn)請(qǐng)求起始查詢的時(shí)間點(diǎn)就會(huì)有所不同。
[0063]302、當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),服務(wù)器加入最先查詢實(shí)際并發(fā)數(shù)的訪問(wèn)請(qǐng)求。
[0064]如前所述,每條訪問(wèn)請(qǐng)求的查詢時(shí)間點(diǎn)是隨機(jī)確定的,因此在數(shù)據(jù)庫(kù)釋放處理資源后,服務(wù)器將最先進(jìn)行查詢的訪問(wèn)請(qǐng)求進(jìn)行加入處理。采用這種實(shí)現(xiàn)方式加入的訪問(wèn)請(qǐng)求完全是隨機(jī)的,因此這種方式也稱為隨機(jī)搶占。實(shí)際應(yīng)用中隨機(jī)搶占的加入方式無(wú)需建立隊(duì)列,相應(yīng)的,也就無(wú)需為隊(duì)列分配緩存和計(jì)數(shù)器等資源,因此實(shí)現(xiàn)起來(lái)較為簡(jiǎn)單。
[0065]舉例進(jìn)行說(shuō)明,如圖4所示,服務(wù)器按照50ms秒的時(shí)間間隔對(duì)2條訪問(wèn)請(qǐng)求進(jìn)行搶占處理。在以O(shè)ms為起點(diǎn)的時(shí)間軸上,請(qǐng)求I分別在第0ms、第50ms、第100ms、第150ms、第200ms上進(jìn)行查詢,請(qǐng)求2則分別在第20ms、第70ms、第120ms、第170ms、第220ms上進(jìn)行查詢。如果數(shù)據(jù)庫(kù)在第95ms釋放一條請(qǐng)求,則在此之后最先進(jìn)行查詢的是請(qǐng)求I (第10ms查詢),因此服務(wù)器對(duì)請(qǐng)求I進(jìn)行加入處理。而如果數(shù)據(jù)庫(kù)在第160ms釋放一條請(qǐng)求,則服務(wù)器對(duì)請(qǐng)求2 (第170ms查詢)進(jìn)行加入處理。
[0066]需要說(shuō)明的是,上述示例僅以數(shù)據(jù)庫(kù)釋放一條請(qǐng)求為例進(jìn)行的說(shuō)明,這種情況下服務(wù)器隨機(jī)搶占的機(jī)會(huì)為一條請(qǐng)求。而在實(shí)際應(yīng)中,數(shù)據(jù)庫(kù)可能在幾乎相同的時(shí)刻上對(duì)多條請(qǐng)求進(jìn)行處理,如果這多條請(qǐng)求的處理時(shí)長(zhǎng)相近,那么服務(wù)器可能會(huì)在幾乎相同的時(shí)刻上釋放多條請(qǐng)求。這種情況下緩存中會(huì)有多條訪問(wèn)請(qǐng)求“搶占”成功。例如在圖4所示示例中,如果數(shù)據(jù)在第95ms釋放了 2條請(qǐng)求,那么分別在第10ms和第120ms進(jìn)行查詢的請(qǐng)求I及請(qǐng)求2均可以被加入處理。但需要注意的是,2條請(qǐng)求雖然都被服務(wù)器加入處理,但是兩者的起始處理時(shí)間仍由各自的查詢時(shí)刻決定,即請(qǐng)求I在第10ms被加入處理,而請(qǐng)求2則是在第120ms被加入處理。
[0067]同樣作為對(duì)圖1步驟103的說(shuō)明,在本發(fā)明的另一實(shí)施例中,當(dāng)數(shù)據(jù)庫(kù)釋放處理資源時(shí),服務(wù)器還可以通過(guò)隨機(jī)選取的方式將緩存的訪問(wèn)請(qǐng)求加入處理。具體的,當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),服務(wù)器加入從緩存的訪問(wèn)請(qǐng)求中隨機(jī)選取出的訪問(wèn)請(qǐng)求。例如,如圖5所示,當(dāng)數(shù)據(jù)庫(kù)釋放了 4條請(qǐng)求時(shí),服務(wù)器在對(duì)實(shí)際并發(fā)數(shù)進(jìn)行查詢后,可以在緩存的15條訪問(wèn)請(qǐng)求中隨機(jī)選取請(qǐng)求2、請(qǐng)求5、請(qǐng)求9及請(qǐng)求13進(jìn)行處理。
[0068]實(shí)際應(yīng)用中,服務(wù)器可以采用諸如哈希(Hash)算法等規(guī)則實(shí)現(xiàn)訪問(wèn)請(qǐng)求的選取,或者服務(wù)器也可以對(duì)排序后的訪問(wèn)請(qǐng)求進(jìn)行抽樣選取,例如“逢五抽一”或“逢時(shí)抽一”等,本實(shí)施例不對(duì)服務(wù)器采用的隨機(jī)算法進(jìn)行限制。
[0069]與上述實(shí)施例類似的,本實(shí)施例中服務(wù)器定期查詢的時(shí)間間隔也可被設(shè)置為Ims至10ms中的任一數(shù)值,其中,較為典型的取值包括:5ms、10ms、30ms、50ms、90ms等。但是與上述實(shí)施例不同的是,本實(shí)施例中,服務(wù)器不再針對(duì)訪問(wèn)請(qǐng)求進(jìn)行查詢,而是進(jìn)行統(tǒng)一查詢。例如,在上述實(shí)施例中,對(duì)于12條訪問(wèn)請(qǐng)求而言,服務(wù)器需要一次性進(jìn)行12次查詢操作(當(dāng)然并非一定是在同一時(shí)刻上完成);而在本實(shí)施例中,無(wú)論緩存了多少條訪問(wèn)請(qǐng)求,服務(wù)器在每次時(shí)間間隔到達(dá)時(shí)僅進(jìn)行I次查詢操作。
[0070]同樣作為對(duì)圖1步驟103的說(shuō)明,在本發(fā)明的再一實(shí)施例中,當(dāng)數(shù)據(jù)庫(kù)釋放處理資源時(shí),服務(wù)器還可以根據(jù)訪問(wèn)請(qǐng)求的排序?qū)υL問(wèn)請(qǐng)求進(jìn)行順次選取。具體的,如圖6所示,該方案包括:
[0071 ] 601、對(duì)緩存的訪問(wèn)請(qǐng)求進(jìn)行排隊(duì)。
[0072]本實(shí)施例中,服務(wù)器選取訪問(wèn)請(qǐng)求的基礎(chǔ)在于,緩存的訪問(wèn)請(qǐng)求能夠以一定的規(guī)則進(jìn)行排序。因此與前述實(shí)施例不同的是,本實(shí)施例中服務(wù)器首先需要按照一定的排序規(guī)則對(duì)訪問(wèn)請(qǐng)求進(jìn)行排序。
[0073]在本實(shí)施例的一種實(shí)現(xiàn)方式中,服務(wù)器可以按照訪問(wèn)請(qǐng)求優(yōu)先級(jí)由高到低的順序?qū)彺娴脑L問(wèn)請(qǐng)求進(jìn)行排序,或者也可以按照請(qǐng)求語(yǔ)句由長(zhǎng)到短的順序?qū)彺娴脑L問(wèn)請(qǐng)求進(jìn)行排序,再或者,服務(wù)器還可以按照緩存的先后順序?qū)彺娴脑L問(wèn)請(qǐng)求進(jìn)行排序。本實(shí)施例不對(duì)服務(wù)器采用的排序規(guī)則進(jìn)行具體限制。
[0074]在進(jìn)行排序時(shí),服務(wù)器在內(nèi)存中開辟一塊緩存空間,建立一個(gè)足夠長(zhǎng)的隊(duì)列(當(dāng)然也可以建立多個(gè)隊(duì)列),在對(duì)緩存的訪問(wèn)請(qǐng)求做好排序后,服務(wù)器按照排序結(jié)果對(duì)訪問(wèn)請(qǐng)求順序進(jìn)行入隊(duì)。
[0075]602、當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),加入緩存隊(duì)列隊(duì)首的訪問(wèn)請(qǐng)求。
[0076]當(dāng)數(shù)據(jù)庫(kù)釋放請(qǐng)求對(duì)應(yīng)處理資源時(shí),服務(wù)器從隊(duì)列的隊(duì)首開始,順次選擇一條或多條訪問(wèn)請(qǐng)求(由數(shù)據(jù)庫(kù)釋放的處理資源大小決定)進(jìn)行處理。
[0077]當(dāng)有新的訪問(wèn)請(qǐng)求上報(bào)時(shí),服務(wù)器可以采用兩種方式將其加入隊(duì)列:第一種,服務(wù)器對(duì)包括新請(qǐng)求在內(nèi)的所有請(qǐng)求重新進(jìn)行排序,獲得新的請(qǐng)求隊(duì)列。第二種,服務(wù)器不再進(jìn)行二次排序,直接將新請(qǐng)求加入到隊(duì)尾(本質(zhì)相當(dāng)于按照請(qǐng)求先后順序進(jìn)行排序)。
[0078]可選的,在本實(shí)施例的另一種實(shí)現(xiàn)方式中,服務(wù)器還可以從不同的維度對(duì)緩存的訪問(wèn)請(qǐng)求分別進(jìn)行分類,并針對(duì)每種分類分別進(jìn)行排隊(duì)。例如,對(duì)于7條數(shù)據(jù)請(qǐng)求而言,月艮務(wù)器從“優(yōu)先級(jí)”、“語(yǔ)句長(zhǎng)度”以及“請(qǐng)求發(fā)起順序”3個(gè)維度對(duì)7條訪問(wèn)請(qǐng)求獨(dú)立進(jìn)行排序,得到如圖7所示的3條隊(duì)列。
[0079]在進(jìn)行實(shí)際并發(fā)數(shù)查詢時(shí),服務(wù)器按照前述“隨機(jī)搶占”的方式分別為3條隊(duì)列發(fā)起查詢,當(dāng)數(shù)據(jù)庫(kù)釋放一條請(qǐng)求時(shí),服務(wù)器對(duì)最先搶占到的隊(duì)列的隊(duì)首請(qǐng)求加入進(jìn)行處理操作。需要說(shuō)明的是,由于3條隊(duì)列是對(duì)同一批訪問(wèn)請(qǐng)求在不同緯度上的分類,因此為避免不同隊(duì)列對(duì)同一訪問(wèn)請(qǐng)求的重復(fù)處理,在某條隊(duì)列中的某個(gè)訪問(wèn)請(qǐng)求出隊(duì)進(jìn)行處理后,月艮務(wù)器需要?jiǎng)h除其他隊(duì)列中的相同訪問(wèn)請(qǐng)求。例如在如7中,當(dāng)隊(duì)列I中的訪問(wèn)請(qǐng)求5出隊(duì)進(jìn)行處理時(shí),服務(wù)器需要分別刪除隊(duì)列2和隊(duì)列3中的訪問(wèn)請(qǐng)求5。
[0080]進(jìn)一步的,作為與上述各實(shí)施例的結(jié)合,在本發(fā)明的另一實(shí)施例中,服務(wù)器還可以對(duì)訪問(wèn)請(qǐng)求的緩存時(shí)間進(jìn)行限制。實(shí)際應(yīng)用中,如果訪問(wèn)請(qǐng)求緩存時(shí)間過(guò)長(zhǎng),則客戶端側(cè)請(qǐng)求響應(yīng)的時(shí)間也會(huì)相應(yīng)延長(zhǎng),過(guò)長(zhǎng)的響應(yīng)時(shí)間會(huì)降低客戶端側(cè)的服務(wù)質(zhì)量(Quality ofService,簡(jiǎn)稱QoS)。同時(shí),訪問(wèn)請(qǐng)求緩存過(guò)久也會(huì)對(duì)服務(wù)器有限的內(nèi)存空間造成過(guò)度占用,增加服務(wù)器的負(fù)荷。因此在緩存超過(guò)一定時(shí)間后,對(duì)訪問(wèn)請(qǐng)求進(jìn)行及時(shí)處理,對(duì)于服務(wù)器的穩(wěn)定運(yùn)行就顯得至關(guān)重要。在本實(shí)施例中,服務(wù)器可以預(yù)先獲取設(shè)定的計(jì)時(shí)時(shí)長(zhǎng),在對(duì)訪問(wèn)請(qǐng)求進(jìn)行緩存后,服務(wù)器啟動(dòng)對(duì)訪問(wèn)請(qǐng)求的計(jì)時(shí)。若訪問(wèn)請(qǐng)求在計(jì)時(shí)超時(shí)前得到處理,則服務(wù)器從緩存清除該訪問(wèn)請(qǐng)求,并對(duì)計(jì)時(shí)器進(jìn)行清零。若訪問(wèn)請(qǐng)求在計(jì)時(shí)超時(shí)時(shí)仍未得到處理,則服務(wù)器直接對(duì)緩存的訪問(wèn)請(qǐng)求進(jìn)行清除,其作用相當(dāng)于現(xiàn)有技術(shù)中的請(qǐng)求被拒,同時(shí),服務(wù)器通知客戶端數(shù)據(jù)請(qǐng)求失敗。
[0081]需要說(shuō)明的是,本方案是以客戶端側(cè)的響應(yīng)時(shí)長(zhǎng)為首要因素進(jìn)行的設(shè)計(jì),而當(dāng)首要因素發(fā)生改變時(shí),服務(wù)器也可以對(duì)應(yīng)改變相應(yīng)的策略。例如,當(dāng)首要因素改變?yōu)樵L問(wèn)請(qǐng)求的成功率時(shí),服務(wù)器可以在計(jì)時(shí)超時(shí)時(shí),對(duì)訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零,使其重新進(jìn)行計(jì)時(shí),由此保證訪問(wèn)請(qǐng)求在得到處理前不會(huì)被清除出緩存。當(dāng)然,針對(duì)后者實(shí)現(xiàn)方式而言,更為簡(jiǎn)便的做法可以是直接取消對(duì)訪問(wèn)請(qǐng)求的計(jì)時(shí)。
[0082]此外,當(dāng)緩存的訪問(wèn)請(qǐng)求加入失敗時(shí),服務(wù)器也可以對(duì)緩存的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零,以保證緩存的剩余訪問(wèn)請(qǐng)求有足夠長(zhǎng)的時(shí)間等待處理。本方式是針對(duì)訪問(wèn)請(qǐng)求加入失敗時(shí)進(jìn)行的計(jì)時(shí)清零,例如在隨機(jī)搶占失敗時(shí),服務(wù)器對(duì)緩存中剩余的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零。與上述計(jì)時(shí)超時(shí)清零不同,服務(wù)器在對(duì)請(qǐng)求進(jìn)行計(jì)時(shí)清零時(shí),訪問(wèn)請(qǐng)求的計(jì)時(shí)尚未超時(shí)。
[0083]實(shí)際應(yīng)用中,上述計(jì)時(shí)時(shí)長(zhǎng)的設(shè)定范圍可以是Is至10s,其中較為典型的設(shè)定包括 3s、5s 及 8s。
[0084]進(jìn)一步的,作為與上述各實(shí)施例的結(jié)合,在本發(fā)明的另一實(shí)施例中,服務(wù)器還可以對(duì)并發(fā)數(shù)上限進(jìn)行設(shè)置?,F(xiàn)有技術(shù)中的并發(fā)數(shù)上限通常時(shí)固定的,當(dāng)并發(fā)數(shù)上限過(guò)大時(shí),月艮務(wù)器與數(shù)據(jù)庫(kù)的資源占用過(guò)多,會(huì)降低系統(tǒng)的運(yùn)行效率;當(dāng)并發(fā)數(shù)上限過(guò)小時(shí),無(wú)法滿足網(wǎng)絡(luò)的業(yè)務(wù)需求,數(shù)據(jù)請(qǐng)求的失敗率會(huì)大大增加。而在本實(shí)施例中,服務(wù)器可以根據(jù)不同的參數(shù)獲得合適的并發(fā)數(shù)上限,由此在保證系統(tǒng)運(yùn)行效率的基礎(chǔ)上降低請(qǐng)求訪問(wèn)的失敗率。
[0085]在本實(shí)施例的一種實(shí)現(xiàn)方式中,服務(wù)器可以根據(jù)后端的處理參數(shù)設(shè)置并發(fā)數(shù)上限。本實(shí)現(xiàn)方式中的后端主要是指數(shù)據(jù)庫(kù)服務(wù)器,其處理參數(shù)包括但不限于是=CPU占例、內(nèi)存占例、內(nèi)存大小、網(wǎng)卡速度、硬盤速度、硬盤大小、網(wǎng)絡(luò)帶寬、(PU緩存大小及CPU寄存器寬度。當(dāng)數(shù)據(jù)庫(kù)的處理負(fù)荷較大(例如內(nèi)存占例過(guò)高或CPU寄存器寬度較小)時(shí),可以適當(dāng)調(diào)小并發(fā)數(shù)上限。
[0086]在本實(shí)施例的另一種實(shí)現(xiàn)方式中,服務(wù)器還可以根后端處理訪問(wèn)請(qǐng)求的時(shí)長(zhǎng)設(shè)置并發(fā)數(shù)上限。數(shù)據(jù)庫(kù)響應(yīng)訪問(wèn)請(qǐng)求的時(shí)間長(zhǎng)短也可以反映數(shù)據(jù)庫(kù)的負(fù)荷大小(或處理能力大小)。當(dāng)數(shù)據(jù)庫(kù)響應(yīng)請(qǐng)求的時(shí)長(zhǎng)過(guò)長(zhǎng)時(shí),服務(wù)器可以適當(dāng)調(diào)小并發(fā)數(shù)上限。
[0087]實(shí)際應(yīng)用中,可以根據(jù)隨機(jī)抽樣出的訪問(wèn)請(qǐng)求的響應(yīng)時(shí)長(zhǎng)設(shè)定并發(fā)數(shù)上限,也可以對(duì)多個(gè)訪問(wèn)請(qǐng)求的響應(yīng)時(shí)長(zhǎng)取平均值,并據(jù)此均值設(shè)定并發(fā)數(shù)上限。
[0088]在本實(shí)施例的另一種實(shí)現(xiàn)方式中,服務(wù)器還可以根據(jù)后端的緩存大小及訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度設(shè)置并發(fā)數(shù)上限。通常數(shù)據(jù)庫(kù)會(huì)為訪問(wèn)請(qǐng)求的響應(yīng)分配一定的緩存空間,而不同語(yǔ)句長(zhǎng)度的訪問(wèn)請(qǐng)求會(huì)占用不同大小的緩存空間,因此,服務(wù)器可以據(jù)此計(jì)算出并發(fā)數(shù)上限。示例性的,若數(shù)據(jù)庫(kù)分配的緩存大小為32M、每條訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度均為500K,則服務(wù)器設(shè)置的并發(fā)數(shù)上限為32M/500K = 64。當(dāng)然,實(shí)際應(yīng)用中,為使數(shù)據(jù)庫(kù)緩存保持一定冗余,設(shè)定的并發(fā)數(shù)上限也可以稍少于64。
[0089]通常,客戶端上報(bào)訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)短不盡相同,從幾K到幾百M(fèi)不等。因此在設(shè)置并發(fā)數(shù)上限時(shí),服務(wù)器可以采用較為典型的語(yǔ)句長(zhǎng)度進(jìn)行計(jì)算,例如絕大多數(shù)訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度處于百K級(jí)別,因此可以采用該級(jí)別長(zhǎng)度數(shù)值進(jìn)行計(jì)算;或者,服務(wù)器也可以對(duì)一段時(shí)間內(nèi)處理過(guò)的訪問(wèn)請(qǐng)求進(jìn)行統(tǒng)計(jì),獲得其語(yǔ)句長(zhǎng)度的平均值,參與上述計(jì)算。
[0090]以上幾種實(shí)現(xiàn)方式僅作為對(duì)設(shè)置并發(fā)數(shù)上限的示例性說(shuō)明,實(shí)際應(yīng)用中,服務(wù)器還可以但不限于根據(jù)網(wǎng)絡(luò)中的客戶端數(shù)量或其他具體參數(shù)設(shè)置并發(fā)數(shù)上限,本實(shí)施例對(duì)此不作限制。
[0091]此外,在設(shè)置并發(fā)數(shù)上限的時(shí)機(jī)上,服務(wù)器可以在系統(tǒng)啟動(dòng)運(yùn)行時(shí)對(duì)并發(fā)數(shù)上限進(jìn)行初始化設(shè)置,也可以在系統(tǒng)運(yùn)行過(guò)程中對(duì)并發(fā)數(shù)上限進(jìn)行動(dòng)態(tài)設(shè)置,本實(shí)施例對(duì)此同樣不作限制。
[0092]本實(shí)施例提供的用于設(shè)置并發(fā)數(shù)上限的方案,能夠根據(jù)網(wǎng)絡(luò)的實(shí)際參數(shù)對(duì)并發(fā)數(shù)上限進(jìn)行設(shè)定,在保證滿足客戶端業(yè)務(wù)需求的同時(shí)盡量減小數(shù)據(jù)庫(kù)的負(fù)荷。并且,與現(xiàn)有技術(shù)中并發(fā)數(shù)上限過(guò)大相比,本實(shí)施例由于降低了并發(fā)數(shù)上限,因此能夠節(jié)省數(shù)據(jù)庫(kù)的處理資源,縮短數(shù)據(jù)庫(kù)響應(yīng)訪問(wèn)請(qǐng)求的時(shí)間,進(jìn)而在并發(fā)數(shù)上限降低的情況下提高系統(tǒng)處理訪問(wèn)請(qǐng)求的吞吐量。
[0093]進(jìn)一步的,作為對(duì)上述各方法實(shí)施例的實(shí)現(xiàn),本發(fā)明另一實(shí)施例還提供了一種并發(fā)請(qǐng)求的控制裝置。如圖8所示,該裝置包括:存儲(chǔ)單元81、查詢單元82以及處理單元83,其中,
[0094]存儲(chǔ)單元81,用于當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;
[0095]查詢單元82,用于定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0096]處理單元83,用于當(dāng)查詢單元82查詢當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),加入存儲(chǔ)單元81緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0097]進(jìn)一步的,如圖9所示,該裝置還包括:
[0098]建立單元84,用于在存儲(chǔ)單元81對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之前,為每個(gè)訪問(wèn)請(qǐng)求獨(dú)立建立協(xié)程。
[0099]進(jìn)一步的,如圖9所示,查詢單元82包括:
[0100]第一查詢模塊821,用于定期對(duì)請(qǐng)求列表中的語(yǔ)句數(shù)量進(jìn)行統(tǒng)計(jì),請(qǐng)求列表用于記錄當(dāng)前正在處理的訪問(wèn)請(qǐng)求。
[0101]進(jìn)一步的,如圖9所示,查詢單元82包括:
[0102]第二查詢模塊822,用于定期讀取當(dāng)前計(jì)數(shù)器中記錄的實(shí)際并發(fā)數(shù),計(jì)數(shù)器用于在實(shí)際并發(fā)數(shù)發(fā)生變化時(shí)進(jìn)行增減計(jì)數(shù)。
[0103]進(jìn)一步的,如圖9所示,處理單元83,包括:第一處理模塊831 ;
[0104]查詢單元82,用于為每個(gè)緩存的訪問(wèn)請(qǐng)求獨(dú)立查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0105]第一處理模塊831,用于當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),加入最先查詢實(shí)際并發(fā)數(shù)的訪問(wèn)請(qǐng)求。
[0106]進(jìn)一步的,如圖9所示,處理單元83,包括:
[0107]第二處理模塊832,用于當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),加入從緩存的訪問(wèn)請(qǐng)求中隨機(jī)選取出的訪問(wèn)請(qǐng)求。
[0108]進(jìn)一步的,如圖9所示,處理單元83,包括:
[0109]第三處理模塊833,用于對(duì)緩存的訪問(wèn)請(qǐng)求進(jìn)行排隊(duì),當(dāng)當(dāng)前的實(shí)際并發(fā)數(shù)小于并發(fā)數(shù)上限時(shí),加入緩存隊(duì)列隊(duì)首的訪問(wèn)請(qǐng)求。
[0110]進(jìn)一步的,如圖9所示,該裝置還包括:
[0111]計(jì)時(shí)單元85,用于在存儲(chǔ)單元81對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之后,啟動(dòng)對(duì)存儲(chǔ)單元81緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí);
[0112]存儲(chǔ)單元81,還用于當(dāng)計(jì)時(shí)單元85檢測(cè)到緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí)超時(shí)時(shí),清除緩存的訪問(wèn)請(qǐng)求。
[0113]進(jìn)一步的,計(jì)時(shí)單元85,用于當(dāng)處理單元83對(duì)緩存的訪問(wèn)請(qǐng)求加入失敗時(shí),對(duì)存儲(chǔ)單元81緩存的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零。
[0114]進(jìn)一步的,如圖9所示,該裝置還包括:
[0115]設(shè)置單元86,用于設(shè)置并發(fā)數(shù)上限。
[0116]進(jìn)一步的,如圖9所示,設(shè)置單元86,包括:
[0117]第一設(shè)置模塊861,用于根據(jù)后端的處理參數(shù)設(shè)置并發(fā)數(shù)上限;
[0118]第二設(shè)置模塊862,用于根據(jù)后端處理訪問(wèn)請(qǐng)求的時(shí)長(zhǎng)設(shè)置并發(fā)數(shù)上限;
[0119]第三設(shè)置模塊863,用于根據(jù)后端的緩存大小及訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度設(shè)置并發(fā)數(shù)上限。
[0120]進(jìn)一步的設(shè)置單元86,用于在系統(tǒng)啟動(dòng)運(yùn)行時(shí),對(duì)并發(fā)數(shù)上限進(jìn)行初始化設(shè)置;
[0121]設(shè)置單元86,還用于在系統(tǒng)運(yùn)行過(guò)程中,對(duì)并發(fā)數(shù)上限進(jìn)行動(dòng)態(tài)設(shè)置。
[0122]本實(shí)施例提供的并發(fā)請(qǐng)求的控制裝置,能夠?qū)Τ霾l(fā)數(shù)上限的訪問(wèn)請(qǐng)求進(jìn)行緩存,當(dāng)并發(fā)數(shù)空閑時(shí),將緩存的訪問(wèn)請(qǐng)求發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行處理。與現(xiàn)有技術(shù)中拒絕超出部分的訪問(wèn)請(qǐng)求相比,本實(shí)施例提供的并發(fā)請(qǐng)求的控制裝置能夠?qū)⒉⑿刑幚淼拇罅吭L問(wèn)請(qǐng)求分解到時(shí)序上進(jìn)行串行處理,從而保障每個(gè)客戶端的數(shù)據(jù)訪問(wèn)權(quán)利。
[0123]本發(fā)明的實(shí)施例公開了:
[0124]Al、一種并發(fā)請(qǐng)求的控制方法,所述方法適用于數(shù)據(jù)庫(kù)服務(wù)器對(duì)并發(fā)請(qǐng)求進(jìn)行控制,其特征在于,所述方法包括:
[0125]當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;
[0126]定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0127]若所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限,則加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0128]A2、根據(jù)權(quán)利要求Al所述的方法,其特征在于,在所述對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之前,所述方法進(jìn)一步包括:
[0129]為每個(gè)訪問(wèn)請(qǐng)求獨(dú)立建立協(xié)程。
[0130]A3、根據(jù)權(quán)利要求Al所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括:
[0131]定期對(duì)請(qǐng)求列表中的語(yǔ)句數(shù)量進(jìn)行統(tǒng)計(jì),所述請(qǐng)求列表用于記錄當(dāng)前正在處理的訪問(wèn)請(qǐng)求。
[0132]A4、根據(jù)權(quán)利要求Al所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括:
[0133]定期讀取當(dāng)前計(jì)數(shù)器中記錄的實(shí)際并發(fā)數(shù),所述計(jì)數(shù)器用于在所述實(shí)際并發(fā)數(shù)發(fā)生變化時(shí)進(jìn)行增減計(jì)數(shù)。
[0134]A5、根據(jù)權(quán)利要求A3或A4所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括:
[0135]為每個(gè)緩存的訪問(wèn)請(qǐng)求獨(dú)立查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0136]所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括:
[0137]當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入最先查詢實(shí)際并發(fā)數(shù)的訪問(wèn)請(qǐng)求。
[0138]A6、根據(jù)權(quán)利要求A3或A4所述的方法,其特征在于,所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括:
[0139]當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入從所述緩存的訪問(wèn)請(qǐng)求中隨機(jī)選取出的訪問(wèn)請(qǐng)求。
[0140]A7、根據(jù)權(quán)利要求A3或A4所述的方法,其特征在于,所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括:
[0141]對(duì)所述緩存的訪問(wèn)請(qǐng)求進(jìn)行排隊(duì);
[0142]當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述緩存隊(duì)列隊(duì)首的訪問(wèn)請(qǐng)求。
[0143]AS、根據(jù)權(quán)利要求Al所述的方法,其特征在于,在所述對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之后,所述方法進(jìn)一步包括:
[0144]啟動(dòng)對(duì)所述緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí);
[0145]當(dāng)所述緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí)超時(shí)時(shí),清除所述緩存的訪問(wèn)請(qǐng)求。
[0146]A9、根據(jù)權(quán)利要求AS所述的方法,其特征在于,當(dāng)所述緩存的訪問(wèn)請(qǐng)求加入失敗時(shí),所述方法進(jìn)一步包括:
[0147]對(duì)所述緩存的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零。
[0148]A10、根據(jù)權(quán)利要求Al所述的方法,其特征在于,所述方法進(jìn)一步包括:
[0149]設(shè)置所述并發(fā)數(shù)上限。
[0150]All、根據(jù)權(quán)利要求AlO所述的方法,其特征在于,所述設(shè)置所述并發(fā)數(shù)上限,包括:
[0151]根據(jù)后端的處理參數(shù)設(shè)置所述并發(fā)數(shù)上限;
[0152]或者,根據(jù)后端處理訪問(wèn)請(qǐng)求的時(shí)長(zhǎng)設(shè)置所述并發(fā)數(shù)上限;
[0153]或者,根據(jù)后端的緩存大小及訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度設(shè)置所述并發(fā)數(shù)上限。
[0154]A12、根據(jù)權(quán)利要求AlO或All所述的方法,其特征在于,所述設(shè)置所述并發(fā)數(shù)上限,包括:
[0155]在系統(tǒng)啟動(dòng)運(yùn)行時(shí),對(duì)所述并發(fā)數(shù)上限進(jìn)行初始化設(shè)置;
[0156]或者,在系統(tǒng)運(yùn)行過(guò)程中,對(duì)所述并發(fā)數(shù)上限進(jìn)行動(dòng)態(tài)設(shè)置。
[0157]B13、一種并發(fā)請(qǐng)求的控制裝置,適用于數(shù)據(jù)庫(kù)服務(wù)器對(duì)并發(fā)請(qǐng)求進(jìn)行控制,其特征在于,所述裝置包括:
[0158]存儲(chǔ)單元,用于當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存;
[0159]查詢單元,用于定期查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0160]處理單元,用于當(dāng)所述查詢單元查詢所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述存儲(chǔ)單元緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
[0161]B14、根據(jù)權(quán)利要求B13所述的裝置,其特征在于,所述裝置還包括:
[0162]建立單元,用于在所述存儲(chǔ)單元對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之前,為每個(gè)訪問(wèn)請(qǐng)求獨(dú)立建立協(xié)程。
[0163]B15、根據(jù)權(quán)利要求B13所述的裝置,其特征在于,所述查詢單元包括:
[0164]第一查詢模塊,用于定期對(duì)請(qǐng)求列表中的語(yǔ)句數(shù)量進(jìn)行統(tǒng)計(jì),所述請(qǐng)求列表用于記錄當(dāng)前正在處理的訪問(wèn)請(qǐng)求。
[0165]B16、根據(jù)權(quán)利要求B13所述的裝置,其特征在于,所述查詢單元包括:
[0166]第二查詢模塊,用于定期讀取當(dāng)前計(jì)數(shù)器中記錄的實(shí)際并發(fā)數(shù),所述計(jì)數(shù)器用于在所述實(shí)際并發(fā)數(shù)發(fā)生變化時(shí)進(jìn)行增減計(jì)數(shù)。
[0167]B17、根據(jù)權(quán)利要求B15或B16所述的裝置,其特征在于,所述處理單元,包括:第一處理模塊;
[0168]所述查詢單元,用于為每個(gè)緩存的訪問(wèn)請(qǐng)求獨(dú)立查詢當(dāng)前的實(shí)際并發(fā)數(shù);
[0169]所述第一處理模塊,用于當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入最先查詢實(shí)際并發(fā)數(shù)的訪問(wèn)請(qǐng)求。
[0170]B18、根據(jù)權(quán)利要求B15或B16所述的裝置,其特征在于,所述處理單元,包括:
[0171]第二處理模塊,用于當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入從所述緩存的訪問(wèn)請(qǐng)求中隨機(jī)選取出的訪問(wèn)請(qǐng)求。
[0172]B19、根據(jù)權(quán)利要求B15或B16所述的裝置,其特征在于,所述處理單元,包括:
[0173]第三處理模塊,用于對(duì)所述緩存的訪問(wèn)請(qǐng)求進(jìn)行排隊(duì),當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述緩存隊(duì)列隊(duì)首的訪問(wèn)請(qǐng)求。
[0174]B20、根據(jù)權(quán)利要求B13所述的裝置,其特征在于,所述裝置還包括:
[0175]計(jì)時(shí)單元,用于在所述存儲(chǔ)單元對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之后,啟動(dòng)對(duì)所述存儲(chǔ)單元緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí);
[0176]所述存儲(chǔ)單元,還用于當(dāng)所述計(jì)時(shí)單元檢測(cè)到所述緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí)超時(shí)時(shí),清除所述緩存的訪問(wèn)請(qǐng)求。
[0177]B21、根據(jù)權(quán)利要求B20所述的裝置,其特征在于,所述計(jì)時(shí)單元,用于當(dāng)所述處理單元對(duì)所述緩存的訪問(wèn)請(qǐng)求加入失敗時(shí),對(duì)所述存儲(chǔ)單元緩存的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零。
[0178]B22、根據(jù)權(quán)利要求B13所述的裝置,其特征在于,所述裝置還包括:
[0179]設(shè)置單元,用于設(shè)置所述并發(fā)數(shù)上限。
[0180]B23、根據(jù)權(quán)利要求B22所述的裝置,其特征在于,所述設(shè)置單元,包括:
[0181]第一設(shè)置模塊,用于根據(jù)后端的處理參數(shù)設(shè)置所述并發(fā)數(shù)上限;
[0182]第二設(shè)置模塊,用于根據(jù)后端處理訪問(wèn)請(qǐng)求的時(shí)長(zhǎng)設(shè)置所述并發(fā)數(shù)上限;
[0183]第三設(shè)置模塊,用于根據(jù)后端的緩存大小及訪問(wèn)請(qǐng)求的語(yǔ)句長(zhǎng)度設(shè)置所述并發(fā)數(shù)上限。
[0184]B24、根據(jù)權(quán)利要求B22或B23所述的裝置,其特征在于:
[0185]所述設(shè)置單元,用于在系統(tǒng)啟動(dòng)運(yùn)行時(shí),對(duì)所述并發(fā)數(shù)上限進(jìn)行初始化設(shè)置;
[0186]所述設(shè)置單元,還用于在系統(tǒng)運(yùn)行過(guò)程中,對(duì)所述并發(fā)數(shù)上限進(jìn)行動(dòng)態(tài)設(shè)置。
[0187]在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
[0188]可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。
[0189]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0190]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0191]在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
[0192]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0193]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0194]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0195]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級(jí)的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0196]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種并發(fā)請(qǐng)求的控制方法,所述方法適用于數(shù)據(jù)庫(kù)服務(wù)器對(duì)并發(fā)請(qǐng)求進(jìn)行控制,其特征在于,所述方法包括: 當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存; 定期查詢當(dāng)前的實(shí)際并發(fā)數(shù); 若所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限,則加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之前,所述方法進(jìn)一步包括: 為每個(gè)訪問(wèn)請(qǐng)求獨(dú)立建立協(xié)程。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括: 定期對(duì)請(qǐng)求列表中的語(yǔ)句數(shù)量進(jìn)行統(tǒng)計(jì),所述請(qǐng)求列表用于記錄當(dāng)前正在處理的訪問(wèn)請(qǐng)求。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括: 定期讀取當(dāng)前計(jì)數(shù)器中記錄的實(shí)際并發(fā)數(shù),所述計(jì)數(shù)器用于在所述實(shí)際并發(fā)數(shù)發(fā)生變化時(shí)進(jìn)行增減計(jì)數(shù)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述定期查詢當(dāng)前的實(shí)際并發(fā)數(shù),包括: 為每個(gè)緩存的訪問(wèn)請(qǐng)求獨(dú)立查詢當(dāng)前的實(shí)際并發(fā)數(shù); 所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括: 當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入最先查詢實(shí)際并發(fā)數(shù)的訪問(wèn)請(qǐng)求。
6.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括: 當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入從所述緩存的訪問(wèn)請(qǐng)求中隨機(jī)選取出的訪問(wèn)請(qǐng)求。
7.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述加入所述緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理,包括: 對(duì)所述緩存的訪問(wèn)請(qǐng)求進(jìn)行排隊(duì); 當(dāng)所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述緩存隊(duì)列隊(duì)首的訪問(wèn)請(qǐng)求。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存之后,所述方法進(jìn)一步包括: 啟動(dòng)對(duì)所述緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí); 當(dāng)所述緩存的訪問(wèn)請(qǐng)求的計(jì)時(shí)超時(shí)時(shí),清除所述緩存的訪問(wèn)請(qǐng)求。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,當(dāng)所述緩存的訪問(wèn)請(qǐng)求加入失敗時(shí),所述方法進(jìn)一步包括: 對(duì)所述緩存的訪問(wèn)請(qǐng)求進(jìn)行計(jì)時(shí)清零。
10.一種并發(fā)請(qǐng)求的控制裝置,適用于數(shù)據(jù)庫(kù)服務(wù)器對(duì)并發(fā)請(qǐng)求進(jìn)行控制,其特征在于,所述裝置包括: 存儲(chǔ)單元,用于當(dāng)訪問(wèn)請(qǐng)求的實(shí)際并發(fā)數(shù)達(dá)到預(yù)設(shè)的并發(fā)數(shù)上限時(shí),對(duì)超出部分的訪問(wèn)請(qǐng)求進(jìn)行緩存; 查詢單元,用于定期查詢當(dāng)前的實(shí)際并發(fā)數(shù); 處理單元,用于當(dāng)所述查詢單元查詢所述當(dāng)前的實(shí)際并發(fā)數(shù)小于所述并發(fā)數(shù)上限時(shí),加入所述存儲(chǔ)單元緩存的訪問(wèn)請(qǐng)求以進(jìn)行處理。
【文檔編號(hào)】G06F17/30GK104408088SQ201410642791
【公開日】2015年3月11日 申請(qǐng)日期:2014年11月11日 優(yōu)先權(quán)日:2014年11月11日
【發(fā)明者】王院生 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1