一種業(yè)務(wù)請(qǐng)求處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)請(qǐng)求處理方法及裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,用戶通過網(wǎng)絡(luò)獲取各種業(yè)務(wù)請(qǐng)求的需求越來越多。同一業(yè)務(wù)請(qǐng)求通常包括多個(gè)業(yè)務(wù)環(huán)節(jié),各個(gè)業(yè)務(wù)環(huán)節(jié)之間有的相互之間具有依賴關(guān)系,有的則不具有依賴關(guān)系。
[0003]目前,針對(duì)需要執(zhí)行多個(gè)業(yè)務(wù)環(huán)節(jié)的業(yè)務(wù)請(qǐng)求,為了保證各業(yè)務(wù)環(huán)節(jié)執(zhí)行邏輯上的順序關(guān)系,一般都采用單線程處理方式,也即采用單線程依次執(zhí)行各個(gè)業(yè)務(wù)環(huán)節(jié)。比如,針對(duì)某個(gè)業(yè)務(wù)請(qǐng)求,共需要執(zhí)行4個(gè)業(yè)務(wù)環(huán)節(jié),其中,業(yè)務(wù)環(huán)節(jié)4需要依賴于業(yè)務(wù)環(huán)節(jié)I?3的執(zhí)行結(jié)果,業(yè)務(wù)環(huán)節(jié)2和3需要依賴于業(yè)務(wù)環(huán)節(jié)I的執(zhí)行結(jié)果,業(yè)務(wù)環(huán)節(jié)2和3之間不具有依賴關(guān)系,在單線程處理方式下,需要順次執(zhí)行業(yè)務(wù)環(huán)節(jié)1、2、3和4,或者順次執(zhí)行業(yè)務(wù)環(huán)節(jié)1、3、2和4。
[0004]在上述單線程處理方式下,得到業(yè)務(wù)請(qǐng)求的最終的執(zhí)行結(jié)果的處理時(shí)長(zhǎng)是執(zhí)行上述各種業(yè)務(wù)環(huán)節(jié)的處理時(shí)長(zhǎng)的總和。顯然,在這種處理方式下,執(zhí)行業(yè)務(wù)請(qǐng)求的處理時(shí)長(zhǎng)較長(zhǎng),中央處理器(Central Processing Unit, CPU)利用率較低。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)實(shí)施例提供一種業(yè)務(wù)請(qǐng)求處理方法,用以解決現(xiàn)有技術(shù)中執(zhí)行業(yè)務(wù)請(qǐng)求的處理時(shí)長(zhǎng)較長(zhǎng),CPU利用率較低的問題。
[0006]本申請(qǐng)實(shí)施例提供的一種業(yè)務(wù)請(qǐng)求處理方法,包括:
[0007]根據(jù)業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,以及當(dāng)前對(duì)所述業(yè)務(wù)請(qǐng)求的處理進(jìn)度,確定當(dāng)前能夠并行執(zhí)行的業(yè)務(wù)環(huán)節(jié)集合;其中,所述拓?fù)浣Y(jié)構(gòu)信息包括執(zhí)行所述業(yè)務(wù)請(qǐng)求時(shí)需要執(zhí)行的各個(gè)業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系信息;所述業(yè)務(wù)環(huán)節(jié)集合包含一個(gè)業(yè)務(wù)環(huán)節(jié)或包含多個(gè)相互之間不具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié);
[0008]并行執(zhí)行確定的所述業(yè)務(wù)環(huán)節(jié)集合中的各業(yè)務(wù)環(huán)節(jié)。
[0009]可選地,并行執(zhí)行確定的所述業(yè)務(wù)環(huán)節(jié)集合中的各業(yè)務(wù)環(huán)節(jié),包括:
[0010]針對(duì)所述業(yè)務(wù)環(huán)節(jié)集合中的每一個(gè)業(yè)務(wù)環(huán)節(jié),從存儲(chǔ)的業(yè)務(wù)環(huán)節(jié)隊(duì)列中,提取出該業(yè)務(wù)環(huán)節(jié)的執(zhí)行邏輯;
[0011]為所述業(yè)務(wù)環(huán)節(jié)集合中的每一個(gè)業(yè)務(wù)環(huán)節(jié)分別分配一個(gè)空閑狀態(tài)下的工作線程,并控制各工作線程分別基于各自負(fù)責(zé)的業(yè)務(wù)環(huán)節(jié)的執(zhí)行邏輯,并行執(zhí)行各自負(fù)責(zé)的業(yè)務(wù)環(huán)
-K-
T O
[0012]可選地,控制各工作線程分別基于各自負(fù)責(zé)的業(yè)務(wù)環(huán)節(jié)的執(zhí)行邏輯,并行執(zhí)行各自負(fù)責(zé)的業(yè)務(wù)環(huán)節(jié),包括:
[0013]針對(duì)每一個(gè)工作線程,控制該工作線程執(zhí)行:
[0014]若執(zhí)行該業(yè)務(wù)環(huán)節(jié)時(shí)需要依賴于之前執(zhí)行其它業(yè)務(wù)環(huán)節(jié)后輸出的業(yè)務(wù)消息,則從消息郵局中獲取執(zhí)行該業(yè)務(wù)環(huán)節(jié)所需的業(yè)務(wù)消息;所述消息郵局用于存儲(chǔ)執(zhí)行完各業(yè)務(wù)環(huán)節(jié)后輸出的業(yè)務(wù)消息;
[0015]基于獲取的業(yè)務(wù)消息,和該工作線程負(fù)責(zé)的業(yè)務(wù)環(huán)節(jié)的執(zhí)行邏輯,執(zhí)行該業(yè)務(wù)環(huán)
-K-
T O
[0016]可選地,并行執(zhí)行確定的所述業(yè)務(wù)環(huán)節(jié)集合中的各業(yè)務(wù)環(huán)節(jié)之后,還包括:
[0017]若根據(jù)所述業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,確定需要在執(zhí)行完所述業(yè)務(wù)環(huán)節(jié)集合之后,執(zhí)行與所述業(yè)務(wù)環(huán)節(jié)集合具有依賴關(guān)系的所述業(yè)務(wù)請(qǐng)求的下一個(gè)業(yè)務(wù)環(huán)節(jié),則
[0018]針對(duì)所述業(yè)務(wù)環(huán)節(jié)集合中的任一業(yè)務(wù)環(huán)節(jié),在控制為該業(yè)務(wù)環(huán)節(jié)分配的工作線程執(zhí)行完該業(yè)務(wù)環(huán)節(jié)后,判斷該業(yè)務(wù)環(huán)節(jié)是否為所述業(yè)務(wù)環(huán)節(jié)集合中最后一個(gè)被執(zhí)行完的業(yè)務(wù)環(huán)節(jié);
[0019]若是,則控制為所述任一業(yè)務(wù)環(huán)節(jié)分配的工作線程執(zhí)行所述下一個(gè)業(yè)務(wù)環(huán)節(jié)。
[0020]可選地,判斷所述任一業(yè)務(wù)環(huán)節(jié)是否為所述業(yè)務(wù)環(huán)節(jié)集合中最后一個(gè)被執(zhí)行完的業(yè)務(wù)環(huán)節(jié)之后,還包括:
[0021]若確定該業(yè)務(wù)環(huán)節(jié)不是所述業(yè)務(wù)環(huán)節(jié)集合中最后一個(gè)被執(zhí)行完的業(yè)務(wù)環(huán)節(jié),則針對(duì)所述業(yè)務(wù)請(qǐng)求,判斷當(dāng)前是否存在與所述業(yè)務(wù)環(huán)節(jié)集合不具有依賴關(guān)系的其它待執(zhí)行的業(yè)務(wù)環(huán)節(jié);
[0022]若存在,則控制為所述任一業(yè)務(wù)環(huán)節(jié)分配的工作線程執(zhí)行所述其它待執(zhí)行的業(yè)務(wù)環(huán)節(jié);否則,判斷當(dāng)前是否存在其它業(yè)務(wù)請(qǐng)求待執(zhí)行的的業(yè)務(wù)環(huán)節(jié);
[0023]若存在,則控制為所述任一業(yè)務(wù)環(huán)節(jié)分配的工作線程執(zhí)行所述其它業(yè)務(wù)請(qǐng)求待執(zhí)行的業(yè)務(wù)環(huán)節(jié),否則,釋放所述工作線程。
[0024]本申請(qǐng)實(shí)施例提供的一種業(yè)務(wù)請(qǐng)求處理裝置,包括:
[0025]確定模塊,用于根據(jù)業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,以及當(dāng)前對(duì)所述業(yè)務(wù)請(qǐng)求的處理進(jìn)度,確定當(dāng)前能夠并行執(zhí)行的所述業(yè)務(wù)請(qǐng)求的業(yè)務(wù)環(huán)節(jié)集合;其中,所述拓?fù)浣Y(jié)構(gòu)信息包括執(zhí)行所述業(yè)務(wù)請(qǐng)求時(shí)需要執(zhí)行的各個(gè)業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系信息;所述業(yè)務(wù)環(huán)節(jié)集合包含一個(gè)業(yè)務(wù)環(huán)節(jié)或包含多個(gè)相互之間不具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié);
[0026]執(zhí)行模塊,用于并行執(zhí)行確定的所述業(yè)務(wù)環(huán)節(jié)集合中的各業(yè)務(wù)環(huán)節(jié)。
[0027]本申請(qǐng)實(shí)施例可以根據(jù)各業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)所指示的各業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系,將能夠并行執(zhí)行的業(yè)務(wù)環(huán)節(jié)并行執(zhí)行,從而可以減少執(zhí)行業(yè)務(wù)請(qǐng)求的處理時(shí)長(zhǎng),提高業(yè)務(wù)執(zhí)行效率及CPU利用率。
【附圖說明】
[0028]圖1為本申請(qǐng)實(shí)施例一提供的業(yè)務(wù)請(qǐng)求處理方法流程圖;
[0029]圖2為“產(chǎn)品推薦”業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)示意圖;
[0030]圖3為本申請(qǐng)實(shí)施例二提供的業(yè)務(wù)請(qǐng)求處理方法流程圖;
[0031]圖4為本申請(qǐng)實(shí)施例提供的進(jìn)行業(yè)務(wù)請(qǐng)求處理的系統(tǒng)結(jié)構(gòu)示意圖;
[0032]圖5為本申請(qǐng)實(shí)施例三提供的業(yè)務(wù)請(qǐng)求處理方法流程圖;
[0033]圖6(a)為各工作線程執(zhí)行業(yè)務(wù)環(huán)節(jié)的示意圖之一;
[0034]圖6(b)為各工作線程執(zhí)行業(yè)務(wù)環(huán)節(jié)的示意圖之二 ;
[0035]圖7為本申請(qǐng)實(shí)施例提供的業(yè)務(wù)請(qǐng)求處理裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0036]本申請(qǐng)實(shí)施例的基本思想是:在接收到業(yè)務(wù)請(qǐng)求后,根據(jù)該業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,確定執(zhí)行該業(yè)務(wù)請(qǐng)求時(shí)需要執(zhí)行的各個(gè)業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系,在執(zhí)行該業(yè)務(wù)請(qǐng)求的過程中,基于這種依賴關(guān)系以及當(dāng)前對(duì)該業(yè)務(wù)請(qǐng)求的處理進(jìn)度,確定當(dāng)前能夠并行執(zhí)行的業(yè)務(wù)環(huán)節(jié)集合,該業(yè)務(wù)環(huán)節(jié)集合可以包括多個(gè)相互之間不具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié),并行執(zhí)行這些相互之間不具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié),串行執(zhí)行相互之間具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié)??梢?,本申請(qǐng)實(shí)施例可以根據(jù)各業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)所指示的各業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系,將能夠并行執(zhí)行的業(yè)務(wù)環(huán)節(jié)并行執(zhí)行,從而可以減少執(zhí)行業(yè)務(wù)請(qǐng)求的處理時(shí)長(zhǎng),提高業(yè)務(wù)執(zhí)行效率及CPU利用率。
[0037]下面結(jié)合說明書附圖對(duì)本申請(qǐng)實(shí)施例作進(jìn)一步詳細(xì)描述。
[0038]如圖1所示,為本申請(qǐng)實(shí)施例一提供的業(yè)務(wù)請(qǐng)求處理方法流程圖,包括以下步驟:
[0039]SlOl:根據(jù)業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,以及當(dāng)前對(duì)所述業(yè)務(wù)請(qǐng)求的處理進(jìn)度,確定當(dāng)前能夠并行執(zhí)行的業(yè)務(wù)環(huán)節(jié)集合;其中,所述拓?fù)浣Y(jié)構(gòu)信息包括執(zhí)行所述業(yè)務(wù)請(qǐng)求時(shí)需要執(zhí)行的各個(gè)業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系信息;所述業(yè)務(wù)環(huán)節(jié)集合包含一個(gè)業(yè)務(wù)環(huán)節(jié)或包含多個(gè)相互之間不具有依賴關(guān)系的業(yè)務(wù)環(huán)節(jié)。
[0040]在具體實(shí)施過程中,可以預(yù)先根據(jù)不同的業(yè)務(wù)請(qǐng)求的處理流程,存儲(chǔ)該業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)信息,該拓?fù)浣Y(jié)構(gòu)信息可以是基于有向無環(huán)圖的模式存儲(chǔ)的執(zhí)行該業(yè)務(wù)請(qǐng)求時(shí)需要執(zhí)行的各個(gè)業(yè)務(wù)環(huán)節(jié)之間的依賴關(guān)系信息。這里,兩個(gè)業(yè)務(wù)環(huán)節(jié)之間具有依賴關(guān)系是指一個(gè)業(yè)務(wù)環(huán)節(jié)的執(zhí)行需要依賴于另一個(gè)業(yè)務(wù)環(huán)節(jié)的執(zhí)行結(jié)果。如圖2所示,為“產(chǎn)品推薦”這個(gè)業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)示意圖。從該業(yè)務(wù)請(qǐng)求的拓?fù)浣Y(jié)構(gòu)中可以看出,對(duì)各個(gè)業(yè)務(wù)環(huán)節(jié)的執(zhí)行順序是:首先執(zhí)