一種請(qǐng)求處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種請(qǐng)求處理方法及裝置。
【背景技術(shù)】
[0002]計(jì)算機(jī)系統(tǒng)經(jīng)常需要對(duì)其接口接收到的請(qǐng)求進(jìn)行相應(yīng)的處理。這些請(qǐng)求有同步請(qǐng)求和異步請(qǐng)求之分。當(dāng)接口接收到的請(qǐng)求為同步請(qǐng)求時(shí),計(jì)算機(jī)系統(tǒng)需要對(duì)該同步請(qǐng)求進(jìn)行實(shí)時(shí)處理;當(dāng)接口接收到的請(qǐng)求為異步請(qǐng)求時(shí),計(jì)算機(jī)系統(tǒng)不需要對(duì)該異步請(qǐng)求進(jìn)行實(shí)時(shí)處理。
[0003]現(xiàn)有技術(shù)中,計(jì)算機(jī)系統(tǒng)對(duì)于其接口接收到的請(qǐng)求逐一進(jìn)行處理,即對(duì)于接收到的同步請(qǐng)求,逐一進(jìn)行實(shí)時(shí)處理,對(duì)于接收到的異步請(qǐng)求,逐一進(jìn)行非實(shí)時(shí)處理。
[0004]這種方法存在一定的缺點(diǎn),因?yàn)橛?jì)算機(jī)系統(tǒng)在對(duì)其接口接收到的各個(gè)請(qǐng)求進(jìn)行處理的過(guò)程中,會(huì)引起隨機(jī)的磁盤讀取,而對(duì)于某個(gè)計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),其接口接收到的請(qǐng)求對(duì)應(yīng)的任務(wù)是相似的,如一個(gè)計(jì)數(shù)器系統(tǒng),其接口同時(shí)可能接收到較多的并發(fā)請(qǐng)求(含同步請(qǐng)求和異步請(qǐng)求),每個(gè)請(qǐng)求對(duì)應(yīng)的任務(wù)都是給當(dāng)前計(jì)數(shù)數(shù)值加1,如果對(duì)這些請(qǐng)求進(jìn)行逐一處理,將會(huì)導(dǎo)致請(qǐng)求的重復(fù)執(zhí)行,從而增加數(shù)據(jù)庫(kù)I/o壓力,給系統(tǒng)帶來(lái)較重的負(fù)擔(dān)。
【發(fā)明內(nèi)容】
[0005]為解決上述問(wèn)題,本發(fā)明實(shí)施例公開(kāi)了一種請(qǐng)求處理方法及裝置。技術(shù)方案如下:
[0006]一種請(qǐng)求處理方法,包括:
[0007]檢測(cè)是否接收到同步請(qǐng)求或第一定時(shí)器是否達(dá)到預(yù)設(shè)閾值;
[0008]當(dāng)接收到同步請(qǐng)求或所述第一定時(shí)器達(dá)到預(yù)設(shè)閾值時(shí),提取等待隊(duì)列中的所有請(qǐng)求;
[0009]將提取的所有請(qǐng)求進(jìn)行合并,并執(zhí)行合并后的請(qǐng)求。
[0010]在本發(fā)明的一種【具體實(shí)施方式】中,所述等待隊(duì)列中的每個(gè)請(qǐng)求為:所述等待隊(duì)列的狀態(tài)為解鎖狀態(tài)時(shí)存入的請(qǐng)求。
[0011]在本發(fā)明的一種【具體實(shí)施方式】中,在存入的請(qǐng)求為異步請(qǐng)求的情況下,所述方法還包括:
[0012]向所述異步請(qǐng)求的發(fā)送方返回接收確認(rèn)信息。
[0013]在本發(fā)明的一種【具體實(shí)施方式】中,在所述提取等待隊(duì)列中的所有請(qǐng)求之前,還包括:
[0014]判斷執(zhí)行合并后的請(qǐng)求的任務(wù)執(zhí)行進(jìn)程是否為鎖定狀態(tài);
[0015]如果否,則執(zhí)行所述提取步驟。
[0016]在本發(fā)明的一種【具體實(shí)施方式】中,在所述提取等待隊(duì)列中的所有請(qǐng)求之前,還包括:
[0017]將所述等待隊(duì)列的狀態(tài)修改為鎖定狀態(tài);
[0018]在所述提取等待隊(duì)列中的所有請(qǐng)求之后,還包括:
[0019]將所述等待隊(duì)列的狀態(tài)修改為解鎖狀態(tài)。
[0020]在本發(fā)明的一種【具體實(shí)施方式】中,在所述任務(wù)執(zhí)行進(jìn)程為鎖定狀態(tài)的情況下,所述方法還包括:將所述第一定時(shí)器清零。
[0021]在本發(fā)明的一種【具體實(shí)施方式】中,當(dāng)提取的請(qǐng)求中包含同步請(qǐng)求時(shí),所述方法還包括:
[0022]向所述同步請(qǐng)求的發(fā)送方返回執(zhí)行結(jié)果信息。
[0023]一種請(qǐng)求處理裝置,包括:
[0024]檢測(cè)模塊,用于檢測(cè)是否接收到同步請(qǐng)求或第一定時(shí)器是否達(dá)到預(yù)設(shè)閾值;
[0025]提取模塊,用于在接收到同步請(qǐng)求或所述第一定時(shí)器達(dá)到預(yù)設(shè)閾值的情況下,提取等待隊(duì)列中的所有請(qǐng)求;
[0026]執(zhí)行模塊,用于將提取的所有請(qǐng)求進(jìn)行合并,并執(zhí)行合并后的請(qǐng)求。
[0027]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0028]存儲(chǔ)模塊,用于在等待隊(duì)列的狀態(tài)為解鎖狀態(tài)時(shí)將接收的請(qǐng)求存入等待隊(duì)列。
[0029]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0030]確認(rèn)信息返回模塊,用于在存入的請(qǐng)求為異步請(qǐng)求的情況下,向所述異步請(qǐng)求的發(fā)送方返回接收確認(rèn)信息。
[0031]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0032]判斷模塊,用于判斷執(zhí)行合并后的請(qǐng)求的任務(wù)執(zhí)行進(jìn)程是否為鎖定狀態(tài),如果否,則觸發(fā)所述提取模塊。
[0033]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0034]第一狀態(tài)修改模塊,用于在所述提取等待隊(duì)列中的所有請(qǐng)求之前,將所述等待隊(duì)列的狀態(tài)修改為鎖定狀態(tài);
[0035]第二狀態(tài)修改模塊,用于在所述提取等待隊(duì)列中的所有請(qǐng)求之后,將所述等待隊(duì)列的狀態(tài)修改為解鎖狀態(tài)。
[0036]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0037]定時(shí)器清零模塊,用于在所述任務(wù)執(zhí)行進(jìn)程為鎖定狀態(tài)的情況下,將所述第一定時(shí)器清零。
[0038]在本發(fā)明的一種【具體實(shí)施方式】中,還包括:
[0039]執(zhí)行結(jié)果返回模塊,用于在提取的請(qǐng)求中包含同步請(qǐng)求的情況下,向所述同步請(qǐng)求的發(fā)送方返回執(zhí)行結(jié)果信息。
[0040]應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,計(jì)算機(jī)系統(tǒng)對(duì)于其接口接收到的請(qǐng)求并不逐一進(jìn)行處理,而是先存入等待隊(duì)列,當(dāng)接口接收到的請(qǐng)求為同步請(qǐng)求或者第一定時(shí)器達(dá)到預(yù)設(shè)閾值時(shí),再對(duì)等待隊(duì)列中的請(qǐng)求進(jìn)行合并處理,并執(zhí)行合并后的請(qǐng)求,有效減少了請(qǐng)求的重復(fù)執(zhí)行,減小了數(shù)據(jù)庫(kù)I/o壓力,減輕了系統(tǒng)負(fù)擔(dān)。
【附圖說(shuō)明】
[0041]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0042]圖1為本發(fā)明實(shí)施例中請(qǐng)求處理方法的一種實(shí)施流程圖;
[0043]圖2為本發(fā)明實(shí)施例中請(qǐng)求處理方法的另一種實(shí)施流程圖;
[0044]圖3為本發(fā)明實(shí)施例中請(qǐng)求處理裝置的一種結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0045]首先對(duì)本發(fā)明實(shí)施例所提供的一種請(qǐng)求處理方法進(jìn)行說(shuō)明,該方法可以包括以下步驟:
[0046]檢測(cè)是否接收到同步請(qǐng)求或第一定時(shí)器是否達(dá)到預(yù)設(shè)閾值;
[0047]當(dāng)接收到同步請(qǐng)求或所述第一定時(shí)器達(dá)到預(yù)設(shè)閾值時(shí),提取等待隊(duì)列中的所有請(qǐng)求;
[0048]將提取的所有請(qǐng)求進(jìn)行合并,并執(zhí)行合并后的請(qǐng)求。
[0049]該方法應(yīng)用在計(jì)算機(jī)系統(tǒng)上,該計(jì)算機(jī)系統(tǒng)的接口接收的請(qǐng)求可以是同步請(qǐng)求或異步請(qǐng)求,這些請(qǐng)求可以是該計(jì)算機(jī)系統(tǒng)自身產(chǎn)生的,還可以是其他系統(tǒng)或終端等發(fā)送方發(fā)送的。該計(jì)算機(jī)系統(tǒng)可以包含請(qǐng)求存儲(chǔ)進(jìn)程、請(qǐng)求提取進(jìn)程和任務(wù)執(zhí)行進(jìn)程。
[0050]在計(jì)算機(jī)系統(tǒng)的接口接收到同步請(qǐng)求或異步請(qǐng)求后,可以調(diào)用請(qǐng)求存儲(chǔ)進(jìn)程,將接口接收到的請(qǐng)求存入等待隊(duì)列。
[0051]如果存入等待隊(duì)列的請(qǐng)求是同步請(qǐng)求,則觸發(fā)請(qǐng)求提取進(jìn)程,提取等待隊(duì)列中的所有請(qǐng)求,此時(shí),等待隊(duì)列中除了該同步請(qǐng)求,可能還存在一個(gè)或多個(gè)異步請(qǐng)求。提取到等待隊(duì)列中的所有請(qǐng)求后,將提取到的請(qǐng)求進(jìn)行合并,并調(diào)用任務(wù)執(zhí)行進(jìn)程執(zhí)行合并后的請(qǐng)求。
[0052]如果在一定的時(shí)間長(zhǎng)度內(nèi)沒(méi)有接收到同步請(qǐng)求,而等待隊(duì)列中已經(jīng)存儲(chǔ)了一個(gè)或多個(gè)異步請(qǐng)求,為了保證對(duì)異步請(qǐng)求的處理,在本發(fā)明實(shí)施例中可以根據(jù)第一定時(shí)器是否達(dá)到了預(yù)設(shè)閾值,判斷是否觸發(fā)請(qǐng)求提取進(jìn)程。當(dāng)該第一定時(shí)器達(dá)到預(yù)設(shè)閾值時(shí),提取等待隊(duì)列中的所有請(qǐng)求。提取到等待隊(duì)列中的所有請(qǐng)求后,將提取到的請(qǐng)求進(jìn)行合并,并調(diào)用任務(wù)執(zhí)行進(jìn)程執(zhí)行合并后的請(qǐng)求。
[0053]應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,計(jì)算機(jī)系統(tǒng)對(duì)于其接收到的請(qǐng)求并不逐一進(jìn)行處理,而是先存入等待隊(duì)列,當(dāng)接收到的請(qǐng)求為同步請(qǐng)求或者第一定時(shí)器達(dá)到預(yù)設(shè)閾值時(shí),再