【技術實現步驟摘要】
本專利技術實施例涉及計算機網絡技術,尤其涉及一種數據處理方法和裝置。
技術介紹
隨著計算機網絡技術的發展,多核多線程并發處理技術也得到的了迅速發展。在多核多線程并發處理的環境中,各線程在處理報文之前,需要讀寫報文所在業務流數據流的中間狀態數據,如果同一業務流數據流的不同報文被多個線程同時處理,則會出現多個線程同時讀寫同一業務流數據流的中間狀態數據的情形,而由于一個業務流數據流的中間狀態數據同一時刻只能由同一線程讀寫,因此,存在資源競爭的問題,不同進程同一時刻處理同流報文則會存在沖突。為了避免沖突,現有技術中,根據報文的五元組信息計算哈希值,按業務處理線程數對哈希值進行求模運算,運算結果對應邏輯線程標識(Identity,以下簡稱:ID),從而產生了流到線程的映射關系,最后根據映射關系,將一條流的報文分發到固定的線程處理,這樣對于一條流的數據是保證單線程處理,從而避免并發沖突。然而,由于報文分發的不均勻性,采用現有技術的方案,會出現在一段時間內,某些線程比較繁忙,而某些線程比較空閑的情況,從而導致多業務并發執行的性能以及網絡設備的處理器的資源利用率均不高。
技術實現思路
本專利技術實施例提供一種數據處理方法和裝置,以增加多業務并發執行的性能,提高網絡設備的處理器的資源利用率。本專利技術實施例第一方面,提供一種數據處理方法,包括:在對待處理報文進行業務處理之前,檢測所述待處理報文所在數據流中是否存在正在被處理的報文;若所述待處理報文所在數據流中不存在正在被處理的報文,則將所述待處理報文發送到業務處理線程,以進行業務處理。結合第一方面,在第一種可能的實現方式中,所 ...
【技術保護點】
一種數據處理方法,其特征在于,包括:在對待處理報文進行業務處理之前,檢測所述待處理報文所在數據流中是否存在正在被處理的報文;若所述待處理報文所在數據流中不存在正在被處理的報文,則將所述待處理報文發送到業務處理線程,以進行業務處理。
【技術特征摘要】
1.一種數據處理方法,其特征在于,包括: 在對待處理報文進行業務處理之前,檢測所述待處理報文所在數據流中是否存在正在被處理的報文; 若所述待處理報文所在數據流中不存在正在被處理的報文,則將所述待處理報文發送到業務處理線程,以進行業務處理。2.根據權利要求1所述的方法,其特征在于,所述檢測所述待處理報文所在數據流中是否存在正在被處理的報文,包括: 檢測所述待處理報文所在數據流的處理狀態,所述處理狀態包括正在被處理狀態和未被處理狀態,其中,正在被處理狀態用于指示數據流中的一個或多個報文正在被業務處理線程處理,未被處理狀態用于指示數據流中沒有任何報文正在被業務處理線程處理; 所述若所述待處理報文所在數據流中不存在正在被處理的報文,則將所述待處理報文發送到業務處理線程,以進行業務處理,包括: 若檢測到所述待處理報文所在數據流的處理狀態為未被處理狀態,將所述待處理報文所在數據流的處理狀態置為正在被處理狀態,將所述待處理報文發送到業務處理線程,以進行業務處理,并在所述業務處理線程對所述待處理報文處理完畢之后,將所述待處理報文所在數據流的處理狀態置為未被處理狀態。3.根據權利要求2所述的方法,其特征在于,還包括: 若檢測到所述待處理報文所在數據流的處理狀態為正在被處理狀態,則將所述待處理報文緩存在第一緩存區中。4.根據權利要求3所述的方法,其特征在于,所述檢測所述待處理報文所在數據流的處理狀態之前, 還包括: 判斷所述第一緩存區是否為空; 若是,則從第二緩存區中獲取一個待處理報文,其中,所述第二緩存區用于緩存來自網絡接口報文; 若否,則從所述第一緩存區中獲取一個待處理報文; 相應地,所述檢測所述待處理報文所在數據流的處理狀態,包括:檢測從所述第一緩存區或第二緩存區獲取的待處理報文所在數據流的處理狀態。5.根據權利要求4所述的方法,其特征在于, 所述第一緩存區包括一個或多個隊列,其中,每一個隊列與一條數據流相關聯,用于緩存該數據流中的待處理報文,所述隊列的個數大于等于所有業務處理線程的個數; 所述將所述待處理報文緩存在第一緩存區中,包括: 判斷所述第一緩存區中是否存在與所述待處理報文所在數據流相關聯的隊列; 若是,則將所述待處理報文緩存在與所述待處理報文所在數據流相關聯的隊列中; 若否,則將所述待處理報文緩存在所述第一緩存區中的空的隊列中,并建立所述空的隊列與所述待處理報文所在數據流的關聯關系,以使所述空的隊列與所述待處理報文所在的數據流相關聯。6.根據權利要求5所述的方法,其特征在于,所述將所述待處理報文所在數據流的處理狀態置為正在被處理狀態,包括: 在流表中將所述待處理報文所在數據流的處理狀態修改為正在被處理狀態;其中,所述流表存儲有所述待處理報文的流標識和處理狀態的對應關系; 所述將所述待處理報文所在數據流的處理狀態置為未被處理狀態,包括: 在流表中將所述待處理報文所在數據流的處理狀態修改為未被處理狀態; 所述檢測從所述第一緩存區或第二緩存區獲取的待處理報文所在數據流的處理狀態,包括: 若所述待處理報文為從所述第二緩存區中獲取的待處理報文,則根據所述待處理報文的五元組信息,確定所述待處理報文的流標識,根據所述流標識從所述流表中查詢得到所述待處理報文所在數據流的處理狀態; 若所述待處理報文為從所述第一緩存區的隊列中獲取的待處理報文,則根據所述隊列對應的流標識從所述流表中查詢得到所述待處理報文所在數據流的處理狀態。7.根據權利要求5或6所述的方法,其特征在于,所述從所述第一緩存區中獲取一個待處理報文之后,還包括: 若緩存所述待處理報文的隊列為空,則刪除所述隊列與所述待處理報文所在數據流之間的關聯關系。8.根據權利要求4所述的方法,其特征在于,所述第一緩存區包括一個或多個鏈表,其中,每一個鏈表與一條數據流相關聯,用于緩存該數據流中的待處理報文,所述鏈表的個數大于等于所有業務處理線程的個數; 所述將所述待處理報文緩存在第一緩存區中,包括: 判斷所述第一緩存區中是否存在與所述待處理報文所在數據流相關聯的鏈表; 若是,則將所述待處理報文緩存在與所述待處理報文所在數據流相關聯的鏈表中;若否,則將所述待處理報文緩存在所述第一緩存區中的空的鏈...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。