專利名稱:數(shù)據(jù)處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),尤其涉及一種數(shù)據(jù)處理方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,多核多線程并發(fā)處理技術(shù)也得到的了迅速發(fā)展。在多核多線程并發(fā)處理的環(huán)境中,各線程在處理報(bào)文之前,需要讀寫(xiě)報(bào)文所在業(yè)務(wù)流數(shù)據(jù)流的中間狀態(tài)數(shù)據(jù),如果同一業(yè)務(wù)流數(shù)據(jù)流的不同報(bào)文被多個(gè)線程同時(shí)處理,則會(huì)出現(xiàn)多個(gè)線程同時(shí)讀寫(xiě)同一業(yè)務(wù)流數(shù)據(jù)流的中間狀態(tài)數(shù)據(jù)的情形,而由于一個(gè)業(yè)務(wù)流數(shù)據(jù)流的中間狀態(tài)數(shù)據(jù)同一時(shí)刻只能由同一線程讀寫(xiě),因此,存在資源競(jìng)爭(zhēng)的問(wèn)題,不同進(jìn)程同一時(shí)刻處理同流報(bào)文則會(huì)存在沖突。為了避免沖突,現(xiàn)有技術(shù)中,根據(jù)報(bào)文的五元組信息計(jì)算哈希值,按業(yè)務(wù)處理線程數(shù)對(duì)哈希值進(jìn)行求模運(yùn)算,運(yùn)算結(jié)果對(duì)應(yīng)邏輯線程標(biāo)識(shí)(Identity,以下簡(jiǎn)稱:ID),從而產(chǎn)生了流到線程的映射關(guān)系,最后根據(jù)映射關(guān)系,將一條流的報(bào)文分發(fā)到固定的線程處理,這樣對(duì)于一條流的數(shù)據(jù)是保證單線程處理,從而避免并發(fā)沖突。然而,由于報(bào)文分發(fā)的不均勻性,采用現(xiàn)有技術(shù)的方案,會(huì)出現(xiàn)在一段時(shí)間內(nèi),某些線程比較繁忙,而某些線程比較空閑的情況,從而導(dǎo)致多業(yè)務(wù)并發(fā)執(zhí)行的性能以及網(wǎng)絡(luò)設(shè)備的處理器的資源利用率均不高。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法和裝置,以增加多業(yè)務(wù)并發(fā)執(zhí)行的性能,提高網(wǎng)絡(luò)設(shè)備的處理器的資源利用率。本發(fā)明實(shí)施例第一方面,提供一種數(shù)據(jù)處理方法,包括:在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文;若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,包括:檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),所述處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理;所述若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,包括:若檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在所述業(yè)務(wù)處理線程對(duì)所述待處理報(bào)文處理完畢之后,將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。結(jié)合第一方面或第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:若檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將所述待處理報(bào)文緩存在第一緩存區(qū)中。結(jié)合第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前,還包括:判斷所述第一緩存區(qū)是否為空;若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,所述第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文;若否,則從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文;相應(yīng)地,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),包括:檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);所述將所述待處理報(bào)文緩存在第一緩存區(qū)中,包括:判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的隊(duì)列中,并建立所述空的隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的隊(duì)列與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),包括:在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,所述流表存儲(chǔ)有所述待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系;所述將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài),包括:在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài);所述檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),包括:若所述待處理報(bào)文為從所述第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)所述待處理報(bào)文的五元組信息,確定所述待處理報(bào)文的流標(biāo)識(shí),根據(jù)所述流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài);若所述待處理報(bào)文為從所述第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)所述隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。結(jié)合第四種可能的實(shí)現(xiàn)方式或第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,還包括:若緩存所述待處理報(bào)文的隊(duì)列為空,則刪除所述隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系。結(jié)合第三種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);所述將所述待處理報(bào)文緩存在第一緩存區(qū)中,包括:判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的鏈表中,并建立所述空的鏈表與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的鏈表與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。本發(fā)明實(shí)施例第二方面,提供一種數(shù)據(jù)處理裝置,包括:檢測(cè)模塊,用于在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文;處理模塊,用于若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述檢測(cè)模塊,具體用于檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),所述處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理;所述處理模塊,具體用于若檢測(cè)模塊檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在所述業(yè)務(wù)處理線程對(duì)所述待處理報(bào)文處理完畢之后,將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。結(jié)合第二方面或第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述處理模塊,還用于若檢測(cè)模塊檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將所述待處理報(bào)文緩存在第一緩存區(qū)中。結(jié)合第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述處理模塊,還用于檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前,判斷所述第一緩存區(qū)是否為空;若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,所述第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文;若否,則從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文;相應(yīng)地,所述檢測(cè)模塊,具體用于檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);所述處理模塊,具體用于判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的隊(duì)列中,并建立所述空的隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的隊(duì)列與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。結(jié)合第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述處理模塊,具體用于在待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài)時(shí),在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,所述流表存儲(chǔ)有所述待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系;并在所述業(yè)務(wù)處理線程對(duì)所述待處理報(bào)文處理完畢之后,在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài);所述檢測(cè)模塊,具體用于若所述待處理報(bào)文為從所述第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)所述待處理報(bào)文的五元組信息,確定所述待處理報(bào)文的流標(biāo)識(shí),根據(jù)所述流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài);若所述待處理報(bào)文為從所述第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)所述隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。結(jié)合第四種可能的實(shí)現(xiàn)方式或第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述處理模塊,具體用于所述從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,若緩存所述待處理報(bào)文的隊(duì)列為空,則刪除所述隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系O結(jié)合第三種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);所述處理模塊,具體用于判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的鏈表中,并建立所述空的鏈表與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的鏈表與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法和裝置,通過(guò)在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,均衡各個(gè)業(yè)務(wù)處理線程的任務(wù)量,增加多業(yè)務(wù)并發(fā)執(zhí)行的性能,提高網(wǎng)絡(luò)設(shè)備的處理器的資源利用率。
為了更清楚地說(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ù)這些附圖獲得其他的附圖。圖1為本發(fā)明數(shù)據(jù)處理方法實(shí)施例一的流程示意圖;圖2為本發(fā)明數(shù)據(jù)處理方法實(shí)施例二的流程示意圖;圖3為本發(fā)明數(shù)據(jù)處理裝置實(shí)施例一的結(jié)構(gòu)示意圖4為本發(fā)明數(shù)據(jù)處理裝置實(shí)施例二的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明數(shù)據(jù)處理方法實(shí)施例一的流程示意圖,如圖1所示,本實(shí)施例的方法包括:SlOl:在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,若否,則執(zhí)行S102,若是,則執(zhí)行S103。具體地,可通過(guò)查詢待處理報(bào)文所在數(shù)據(jù)流的報(bào)文處理狀態(tài)確定待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文。也可通過(guò)查詢各業(yè)務(wù)處理線程正在處理的數(shù)據(jù)流確定待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,也可通過(guò)其他方式檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,本發(fā)明實(shí)施例對(duì)此不作限制。S102:將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,即各業(yè)務(wù)處理線程同一時(shí)刻并發(fā)處理的為不同數(shù)據(jù)流的報(bào)文,在將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理時(shí),可根據(jù)調(diào)度策略,將待處理報(bào)文發(fā)送到比較空閑的業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理,均衡各個(gè)業(yè)務(wù)處理線程的任務(wù)量,提高處理器的資源利用率。S103:其他處理。作為一種可行的實(shí)現(xiàn)方式:若待處理報(bào)文所在數(shù)據(jù)流中存在正在被處理的報(bào)文,則將待處理報(bào)文緩存在第一緩存區(qū)中,以便在各業(yè)務(wù)處理線程處理的數(shù)據(jù)流狀態(tài)變化后,從第一緩存區(qū)中獲取待處理報(bào)文。本實(shí)施例中,通過(guò)在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,均衡各個(gè)業(yè)務(wù)處理線程的任務(wù)量,增加多業(yè)務(wù)并發(fā)執(zhí)行的性能,提高網(wǎng)絡(luò)設(shè)備的處理器的資源利用率。圖2為本發(fā)明數(shù)據(jù)處理方法實(shí)施例二的流程示意圖,如圖2所示,本實(shí)施例的方法包括:S201:判斷第一緩存區(qū)是否為空,若是,執(zhí)行S202,若否,執(zhí)行S203。S202:從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文。 具體地,第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口的報(bào)文。S203:從第一緩存區(qū)中獲取一個(gè)待處理報(bào)文。
具體地,若檢測(cè)到待處理報(bào)文所在數(shù)據(jù)流中存在正在被處理的報(bào)文,則將待處理報(bào)文緩存在第一緩存區(qū)中,可選地,第一緩存區(qū)中的待處理報(bào)文緩存在一個(gè)或多個(gè)隊(duì)列中,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,隊(duì)列的個(gè)數(shù)大于等于網(wǎng)絡(luò)設(shè)備中所有業(yè)務(wù)處理線程的個(gè)數(shù)。通過(guò)S20f S203的步驟保證了報(bào)文先到先處理的原則,即優(yōu)選獲取第一緩存區(qū)中的報(bào)文,在第一緩存區(qū)為空的情況下,再獲取第二緩存區(qū)中的報(bào)文。S204:檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文。若是,執(zhí)行S205,若否,執(zhí)行S206。具體地,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文可通過(guò)檢測(cè)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)來(lái)實(shí)現(xiàn),處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),當(dāng)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則確定待處理報(bào)文所在數(shù)據(jù)流中存在正在被處理的報(bào)文;當(dāng)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),則確定待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文;其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理;分為以下兩種情況:第一種情況:若待處理報(bào)文為從第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)待處理報(bào)文所在隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),以確定待處理報(bào)文所在數(shù)據(jù)流是否存在正在被處理的報(bào)文。第二種情況:若待處理報(bào)文為從第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)待處理報(bào)文的五元組信息,確定待處理報(bào)文的流標(biāo)識(shí),根據(jù)流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),以確定待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文。同一個(gè)數(shù)據(jù)流的不同報(bào)文之間具有相同的五元組信息,五元組信息包括:源網(wǎng)絡(luò)協(xié)議(Internet Protocol,以下簡(jiǎn)稱:IP)地址、目的IP地址、源端口、目的端口、傳輸層協(xié)議。因此,若待處理報(bào)文為從第二緩存區(qū)中獲取的待處理報(bào)文,可根據(jù)待處理報(bào)文的五元組信息,確定待處理報(bào)文的流標(biāo)識(shí),然后再根據(jù)流標(biāo)識(shí)檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文。具體可通過(guò)查詢流表中的流標(biāo)識(shí)對(duì)應(yīng)的報(bào)文處理狀態(tài)確定待處理報(bào)文所在數(shù)據(jù)流是否存在正在處理報(bào)文。值得說(shuō)明的是,在執(zhí)行S204之前,還包括建立流表的步驟,具體可以是根據(jù)流的五元組信息建立五元組信息與流標(biāo)識(shí)之間的一一對(duì)應(yīng)關(guān)系,可選地,可將流標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)流處理狀態(tài)存儲(chǔ)在流表中,也可以將流標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)流處理狀態(tài)存儲(chǔ)在流表之外的獨(dú)立存儲(chǔ)空間中,總之,可通過(guò)流標(biāo)識(shí)查詢到流標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)流處理狀態(tài)即可,對(duì)流標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù)流處理狀態(tài)的具體的存儲(chǔ)方式,本發(fā)明對(duì)此不做限制。 可選地,在上述實(shí)施例中除了五元組信息外,還可以通過(guò)其他能夠標(biāo)識(shí)同一數(shù)據(jù)流的不同報(bào)文的信息,來(lái)建立流表,例如六元組信息,其具體實(shí)現(xiàn)方式與五元組信息類似,此處不再贅述。S205:將待處理報(bào)文緩存在第一緩存區(qū)中。具體地,判斷第一緩存區(qū)中是否存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若存在,則將待處理報(bào)文緩存在與待處理報(bào)文所數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中,可選地,可通過(guò)流標(biāo)識(shí)建立待處理報(bào)文所在數(shù)據(jù)流與隊(duì)列之間的關(guān)聯(lián)關(guān)系。
若不存在,則將待處理報(bào)文緩存在第一緩存區(qū)中的空的隊(duì)列中,并建立空的隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使空的隊(duì)列與待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián),可選地,可通過(guò)將空的隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流的流標(biāo)識(shí)對(duì)應(yīng)。通過(guò)在隊(duì)列頭存儲(chǔ)流標(biāo)識(shí)來(lái)建立隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流的流標(biāo)識(shí)的關(guān)聯(lián)關(guān)系。也就是說(shuō),一個(gè)隊(duì)列只保存一條數(shù)據(jù)流的報(bào)文。S206:將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài)。根據(jù)待處理報(bào)文所在數(shù)據(jù)流的流標(biāo)識(shí),在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置修改為正在被處理狀態(tài),其中,流表存儲(chǔ)有待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系??蛇x地,若待處理報(bào)文為從第一緩存區(qū)中獲取的待處理報(bào)文,在獲取第一緩存區(qū)中的待處理報(bào)文之后,還包括:判斷待處理報(bào)文緩存的隊(duì)列是否為空,若是,則刪除該隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系,使該隊(duì)列成為一個(gè)空的隊(duì)列,以便存儲(chǔ)新的數(shù)據(jù)流的待處理報(bào)文。S207:將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理??蛇x地,可直接將待處理報(bào)文發(fā)送到當(dāng)前空閑的業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理。也可以將待處理報(bào)文進(jìn)行緩存,具體的緩存方式本發(fā)明對(duì)此不作限制,然后根據(jù)調(diào)度策略發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理。由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,任何能夠均衡各個(gè)業(yè)務(wù)處理線程的任務(wù)量的調(diào)度方式都可以,從而,提高網(wǎng)絡(luò)設(shè)備的處理器的資源利用率。S208:將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。在業(yè)務(wù)處理線程處理完待處理報(bào)文之后,將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài),具體地,在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài),未被處理狀態(tài)標(biāo)識(shí)該數(shù)據(jù)流中不存在正在被處理的報(bào)文,以使新的待處理報(bào)文被發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理。本實(shí)施例中,通過(guò)檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,若否,將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理,在業(yè)務(wù)處理線程處理完待處理報(bào)文之后,將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài),以使新的待處理報(bào)文被發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理,由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,才將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)業(yè)務(wù)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,即各業(yè)務(wù)處理線程同一時(shí)刻并發(fā)處理的為不同數(shù)據(jù)流的報(bào)文,在將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理時(shí),可根據(jù)調(diào)度策略,將待處理報(bào)文發(fā)送到比較空閑的業(yè)務(wù)處理線程進(jìn)行業(yè)務(wù)處理,均衡各個(gè)業(yè)務(wù)處理線程的任務(wù)量,以增加多業(yè)務(wù)并發(fā)執(zhí)行的性能,提高網(wǎng)絡(luò)設(shè)備的處理器的資源利用率。在圖2所示實(shí)施例中,可選地,第一緩存區(qū)中的待處理報(bào)文可以緩存在任意的數(shù)據(jù)結(jié)構(gòu)中,例如,第一緩存區(qū)中的待處理報(bào)文緩存在一個(gè)或多個(gè)鏈表或者哈希表中,其中,各鏈表或者哈希表對(duì)應(yīng)一個(gè)數(shù)據(jù)流的流標(biāo)識(shí),鏈表或者哈希表的個(gè)數(shù)大于等于業(yè)務(wù)處理線程的個(gè)數(shù),本發(fā)明對(duì)此不做限制。
圖3為本發(fā)明數(shù)據(jù)處理裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,本實(shí)施例的裝置包括檢測(cè)模塊301和處理模塊302,其中,檢測(cè)模塊301用于在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文;處理模塊302用于若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。本實(shí)施例的裝置用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。在上述實(shí)施例中,檢測(cè)模塊301具體用于檢測(cè)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理;處理模塊302具體用于若檢測(cè)模塊檢測(cè)到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在業(yè)務(wù)處理線程對(duì)待處理報(bào)文處理完畢之后,將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。在上述實(shí)施例中,處理模塊302還用于若檢測(cè)模塊檢測(cè)到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將待處理報(bào)文緩存在第一緩存區(qū)中。在上述實(shí)施例中,處理模塊302還用于檢測(cè)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前,判斷第一緩存區(qū)是否為空;若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文;若否,則從第一緩存區(qū)中獲取一個(gè)待處理報(bào)文;相應(yīng)地,檢測(cè)模塊301具體用于檢測(cè)從第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。在上述實(shí)施例中,第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);處理模塊302具體用于判斷第一緩存區(qū)中是否存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若是,則將待處理報(bào)文緩存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中;若否,則將待處理報(bào)文緩存在第一緩存區(qū)中的空的隊(duì)列中,并建立空的隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使空的隊(duì)列與待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。在上述實(shí)施例中,處理模塊302處理模塊302具體用于在待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài)時(shí),在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,流表存儲(chǔ)有待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系;并在業(yè)務(wù)處理線程對(duì)待處理報(bào)文處理完畢之后,在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài);檢測(cè)模塊301具體用于若待處理報(bào)文為從第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)待處理報(bào)文的五元組信息,確定待處理報(bào)文的流標(biāo)識(shí),根據(jù)流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài);若待處理報(bào)文為從第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。在上述實(shí)施例中,處理模塊302具體用于從第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,若緩存待處理報(bào)文的隊(duì)列為空,則刪除隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系。在上述實(shí)施例中,第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);處理模塊302具體用于判斷第一緩存區(qū)中是否存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表;若是,則將待處理報(bào)文緩存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將待處理報(bào)文緩存在第一緩存區(qū)中的空的鏈表中,并建立空的鏈表與待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使空的鏈表與待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。本實(shí)施例的裝置用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。圖4為本發(fā)明數(shù)據(jù)處理裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例本實(shí)施例的裝置包括通信接口 401、至少一個(gè)處理器402和存儲(chǔ)器403,處理器402、存儲(chǔ)器403和通信接口 401通過(guò)總線連接并完成相互間的通信。所述總線可以是工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Industry Standard Architecture,簡(jiǎn)稱為 ISA)總線、外部設(shè)備互連(PeripheralComponent,簡(jiǎn)稱為PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(Extended Industry StandardArchitecture,簡(jiǎn)稱為EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖4中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。其中,通信接口 401可以為網(wǎng)口、USB接口、射頻單元、天線、w1-fi通信模塊等可以實(shí)現(xiàn)數(shù)據(jù)收發(fā)功能的器件或單元;存儲(chǔ)器403用于存儲(chǔ)可執(zhí)行程序代碼,該程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器403可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。在一個(gè)實(shí)施例中,處理器402通過(guò)讀取存儲(chǔ)器403中存儲(chǔ)的可執(zhí)行程序代碼來(lái)運(yùn)行與所述可執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于:在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文;若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文通過(guò)通信接口401發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。處理器402可能是一個(gè)中央處理器(CentralProcessing Unit,簡(jiǎn)稱為 CPU),或者是特定集成電路(Application Specific IntegratedCircuit,簡(jiǎn)稱為ASIC),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。上述處理器402除了實(shí)現(xiàn)上述功能之外,還可用于執(zhí)行上述方法實(shí)施例中的其他流程,在此不再贅述。其中,上述流程的具體細(xì)節(jié),可以參照上述方法實(shí)施例,此處不再贅述。在上述實(shí)施例中,處理器402具體用于執(zhí)行程序代碼對(duì)應(yīng)的程序,以用于:檢測(cè)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理;若檢測(cè)模塊檢測(cè)到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在業(yè)務(wù)處理線程對(duì)待處理報(bào)文處理完畢之后,將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。在上述實(shí)施例中,處理器402還用于執(zhí)行程序,以用于:若檢測(cè)到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將待處理報(bào)文緩存在第一緩存區(qū)中。在上述實(shí)施例中,處理器402還用于執(zhí)行程序,以用于:檢測(cè)待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前,判斷第一緩存區(qū)是否為空;若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文;若否,則從第一緩存區(qū)中獲取一個(gè)待處理報(bào)文;相應(yīng)地,處理器402具體用于執(zhí)行程序,以用于:檢測(cè)從第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。在上述實(shí)施例中,第一緩存區(qū)和第二緩存區(qū)可以為存儲(chǔ)器403中的兩個(gè)獨(dú)立的存儲(chǔ)空間,進(jìn)一步地,第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);處理器402具體用于執(zhí)行程序,以用于:判斷第一緩存區(qū)中是否存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若是,則將待處理報(bào)文緩存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中;若否,則將待處理報(bào)文緩存在第一緩存區(qū)中的空的隊(duì)列中,并建立空的隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使空的隊(duì)列與待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。在上述實(shí)施例中,處理器402具體用于執(zhí)行程序,以用于:在待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài)時(shí),在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,流表存儲(chǔ)有待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系;并在業(yè)務(wù)處理線程對(duì)待處理報(bào)文處理完畢之后,在流表中將待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài);處理器402具體用于執(zhí)行程序,以用于:若待處理報(bào)文為從第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)待處理報(bào)文的五元組信息,確定待處理報(bào)文的流標(biāo)識(shí),根據(jù)流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài);若待處理報(bào)文為從第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從流表中查詢得到待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。在上述實(shí)施例中,處理器402具體用于執(zhí)行程序,以用于:從第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,若緩存待處理報(bào)文的隊(duì)列為空,則刪除隊(duì)列與待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系。 在另一個(gè)實(shí)施例中,第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù);處理器402具體用于執(zhí)行程序,以用于:判斷第一緩存區(qū)中是否存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表;若是,則將待處理報(bào)文緩存在與待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將待處理報(bào)文緩存在第一緩存區(qū)中的空的鏈表中,并建立空的鏈表與待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使空的鏈表與待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。本實(shí)施例的裝置用于執(zhí)行圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種數(shù)據(jù)處理方法,其特征在于,包括: 在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文; 若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,包括: 檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),所述處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理; 所述若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,包括: 若檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在所述業(yè)務(wù)處理線程對(duì)所述待處理報(bào)文處理完畢之后,將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括: 若檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將所述待處理報(bào)文緩存在第一緩存區(qū)中。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前, 還包括: 判斷所述第一緩存區(qū)是否為空; 若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,所述第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文; 若否,則從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文; 相應(yīng)地,所述檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),包括:檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于, 所述第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù); 所述將所述待處理報(bào)文緩存在第一緩存區(qū)中,包括: 判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列; 若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中; 若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的隊(duì)列中,并建立所述空的隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的隊(duì)列與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),包括: 在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,所述流表存儲(chǔ)有所述待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系; 所述將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài),包括: 在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài); 所述檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),包括: 若所述待處理報(bào)文為從所述第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)所述待處理報(bào)文的五元組信息,確定所述待處理報(bào)文的流標(biāo)識(shí),根據(jù)所述流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài); 若所述待處理報(bào)文為從所述第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)所述隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,還包括: 若緩存所述待處理報(bào)文的隊(duì)列為空,則刪除所述隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系。
8.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù); 所述將所述待處理報(bào)文緩存在第一緩存區(qū)中,包括: 判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表; 若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的鏈表中,并建立所述空的鏈表與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的鏈表與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。
9.一種數(shù)據(jù)處理裝置,其特征在于,包括: 檢測(cè)模塊,用于在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文; 處理模塊,用于若所述待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述檢測(cè)模塊,具體用于,檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài),所述處理狀態(tài)包括正在被處理狀態(tài)和未被處理狀態(tài),其中,正在被處理狀態(tài)用于指示數(shù)據(jù)流中的一個(gè)或多個(gè)報(bào)文正在被業(yè)務(wù)處理線程處理,未被處理狀態(tài)用于指示數(shù)據(jù)流中沒(méi)有任何報(bào)文正在被業(yè)務(wù)處理線程處理; 所述處理模塊,具體用于,若所述檢測(cè)模塊檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài),將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為正在被處理狀態(tài),將所述待處理報(bào)文發(fā)送到業(yè)務(wù)處理線程,以進(jìn)行業(yè)務(wù)處理,并在所述業(yè)務(wù)處理線程對(duì)所述待處理報(bào)文處理完畢之后,將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)置為未被處理狀態(tài)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述處理模塊,還用于若檢測(cè)模塊檢測(cè)到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為正在被處理狀態(tài),則將所述待處理報(bào)文緩存在第一緩存區(qū)中。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述處理模塊,還用于在檢測(cè)模塊檢測(cè)所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)之前,判斷所述第一緩存區(qū)是否為空;若是,則從第二緩存區(qū)中獲取一個(gè)待處理報(bào)文,其中,所述第二緩存區(qū)用于緩存來(lái)自網(wǎng)絡(luò)接口報(bào)文;若否,則從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文; 相應(yīng)地,所述檢測(cè)模塊,具體用于檢測(cè)從所述第一緩存區(qū)或第二緩存區(qū)獲取的待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于, 所述第一緩存區(qū)包括一個(gè)或多個(gè)隊(duì)列,其中,每一個(gè)隊(duì)列與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述隊(duì)列的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù); 所述處理模塊,具體用于判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的隊(duì)列中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的隊(duì)列中,并建立所述空的隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的隊(duì)列與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述處理模塊,具體用于在待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)為未被處理狀態(tài)時(shí),在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為正在被處理狀態(tài);其中,所述流表存儲(chǔ)有所述待處理報(bào)文的流標(biāo)識(shí)和處理狀態(tài)的對(duì)應(yīng)關(guān)系;并在所述業(yè)務(wù) 處理線程對(duì)所述待處理報(bào)文處理完畢之后,在流表中將所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)修改為未被處理狀態(tài); 所述檢測(cè)模塊,具體用于若所述待處理報(bào)文為從所述第二緩存區(qū)中獲取的待處理報(bào)文,則根據(jù)所述待處理報(bào)文的五元組信息,確定所述待處理報(bào)文的流標(biāo)識(shí),根據(jù)所述流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài);若所述待處理報(bào)文為從所述第一緩存區(qū)的隊(duì)列中獲取的待處理報(bào)文,則根據(jù)所述隊(duì)列對(duì)應(yīng)的流標(biāo)識(shí)從所述流表中查詢得到所述待處理報(bào)文所在數(shù)據(jù)流的處理狀態(tài)。
15.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述處理模塊,具體用于所述從所述第一緩存區(qū)中獲取一個(gè)待處理報(bào)文之后,若緩存所述待處理報(bào)文的隊(duì)列為空,則刪除所述隊(duì)列與所述待處理報(bào)文所在數(shù)據(jù)流之間的關(guān)聯(lián)關(guān)系。
16.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一緩存區(qū)包括一個(gè)或多個(gè)鏈表,其中,每一個(gè)鏈表與一條數(shù)據(jù)流相關(guān)聯(lián),用于緩存該數(shù)據(jù)流中的待處理報(bào)文,所述鏈表的個(gè)數(shù)大于等于所有業(yè)務(wù)處理線程的個(gè)數(shù); 所述處理模塊,具體用于判斷所述第一緩存區(qū)中是否存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表;若是,則將所述待處理報(bào)文緩存在與所述待處理報(bào)文所在數(shù)據(jù)流相關(guān)聯(lián)的鏈表中;若否,則將所述待處理報(bào)文緩存在所述第一緩存區(qū)中的空的鏈表中,并建立所述空的鏈表與所述待處理報(bào)文所在數(shù)據(jù)流的關(guān)聯(lián)關(guān)系,以使所述空的鏈表與所述待處理報(bào)文所在的數(shù)據(jù)流相關(guān)聯(lián)。
全文摘要
本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法和裝置,通過(guò)在對(duì)待處理報(bào)文進(jìn)行業(yè)務(wù)處理之前,檢測(cè)待處理報(bào)文所在數(shù)據(jù)流中是否存在正在被處理的報(bào)文,若待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,則將待處理報(bào)文發(fā)送到處理線程中進(jìn)行業(yè)務(wù)處理,由于待處理報(bào)文所在數(shù)據(jù)流中不存在正在被處理的報(bào)文,因此,可將待處理報(bào)文發(fā)送到任何一個(gè)處理線程中進(jìn)行業(yè)務(wù)處理,不會(huì)發(fā)生同一數(shù)據(jù)流的報(bào)文并發(fā)處理的問(wèn)題,均衡各個(gè)處理線程的任務(wù)量,從而,提高網(wǎng)絡(luò)設(shè)備處理器的資源利用率。
文檔編號(hào)H04L12/70GK103166845SQ20131006662
公開(kāi)日2013年6月19日 申請(qǐng)日期2013年3月1日 優(yōu)先權(quán)日2013年3月1日
發(fā)明者史云龍, 何俊, 楊興華 申請(qǐng)人:華為技術(shù)有限公司