專利名稱:一種處理用戶數(shù)據(jù)協(xié)議消息的方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種處理用戶數(shù)據(jù)協(xié)議消息的方 法及其系統(tǒng)。
背景技術(shù):
在電信運營商運行的大型業(yè)務(wù)軟件系統(tǒng),往往采用"負荷分擔(dān)負載均 衡,,的思想來組織架構(gòu)?;谶@一思想,系統(tǒng)中軟件大多采用多進程多線 程模式,運行軟件的服務(wù)器采用多核處理器架構(gòu),這樣可以獲得較高的性 價比和可靠性。所以研究多核處理器架構(gòu)下的消息處理方法,盡可能地充 分利用多核處理器的處理能力,從而提升業(yè)務(wù)處理性能,這具有很好的現(xiàn) 實意義。
作為服務(wù)器端的設(shè)備在接收處理用戶數(shù)據(jù)協(xié)議(UDP)消息時,傳統(tǒng) 的處理模式是一個線程P從它綁定的UDP端口接收到UDP消息,之后有 兩種處J里方式
1、 線程P處理完畢后直接發(fā)出UDP回應(yīng)包;
2、 線程P調(diào)用系統(tǒng)消息發(fā)送函數(shù)將UDP消息發(fā)送給一個或多個處理 線程,處理結(jié)束后線程P或者處理線程發(fā)出UDP回應(yīng)包。
其中,第l種方式中,線程P的消息傳遞能力受制于單個線程的性能; 第2種方式中,線程P與其他線程之間瓶頸制約著消息的傳遞,因此,以 上兩種方式均沒有最大的發(fā)揮線程P的UDP消息接收能力,線程P的性能 瓶頸都出現(xiàn)在UDP接收之后的處理過程中。
因此,現(xiàn)有技術(shù)有待于完善和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種處理用戶數(shù)據(jù)協(xié)議消息的系統(tǒng),該系統(tǒng)可
以發(fā)揮線程接收UDP消息能力,解決UDP消息處理過程中出現(xiàn)的消息傳
遞性能瓶頸;為此,本發(fā)明還提供一種處理用戶數(shù)據(jù)協(xié)議消息的方法。 為了解決上述目的,本發(fā)明系統(tǒng)采用如下技術(shù)方案,其包括 用戶數(shù)據(jù)協(xié)議消息接收線程,綁定在用戶數(shù)據(jù)協(xié)議端口上,用于初始
化所述用戶數(shù)據(jù)協(xié)議端口及接收用戶數(shù)據(jù)協(xié)議消息,并且輸出該用戶數(shù)據(jù)
協(xié)議消息,及數(shù)據(jù)處理線程; 其特征在于,該系統(tǒng)還包括
用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表,用于接收并保存所述用戶數(shù)據(jù)協(xié)議消息 接收線程輸出的用戶數(shù)據(jù)協(xié)議消息;及
轉(zhuǎn)發(fā)數(shù)據(jù)線程,用于讀取保存在所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中的 用戶數(shù)據(jù)協(xié)議消息,并且將該用戶數(shù)據(jù)協(xié)議消息輸出至所述數(shù)據(jù)處理線程;
所述數(shù)據(jù)處理線程,用于處理所述用戶數(shù)據(jù)協(xié)議消息,并輸出用戶數(shù) 據(jù)協(xié)議消息回應(yīng)包。
所述系統(tǒng),其中,所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表數(shù)目為一個或多個, 并且所述轉(zhuǎn)發(fā)數(shù)據(jù)線程及所述數(shù)據(jù)處理線程的數(shù)目與所述用戶數(shù)據(jù)協(xié)議消 息數(shù)據(jù)鏈表的數(shù)目相適配。
所述系統(tǒng),其中,所述用戶數(shù)據(jù)協(xié)議消息是采用輪循式保存到所述用 戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中。
所述系統(tǒng),其中,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程采用循環(huán)周期式讀取保存在所述 用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中的用戶數(shù)據(jù)協(xié)議消息。
所述系統(tǒng),其中,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程循環(huán)讀取所述用戶數(shù)據(jù)協(xié)議消息 的初始循環(huán)周期為100毫秒。
本發(fā)明還提供一種處理用戶數(shù)據(jù)協(xié)議消息的方法,包括如下步驟
A、 將用戶數(shù)據(jù)協(xié)議消息接收線程綁定在用戶數(shù)據(jù)協(xié)議端口上;
B、 所述用戶數(shù)據(jù)協(xié)議消息接收線程從所述用戶數(shù)據(jù)協(xié)議端口接收
用戶數(shù)據(jù)協(xié)議消息,并且保存該用戶數(shù)據(jù)協(xié)議消息; c、轉(zhuǎn)發(fā)數(shù)據(jù)線程讀取并判斷出所述用戶數(shù)據(jù)協(xié)議消息合法后,將該
用戶數(shù)據(jù)協(xié)議消息轉(zhuǎn)發(fā)至數(shù)據(jù)處理線程; D、 所述數(shù)據(jù)處理線程接收并處理該用戶數(shù)據(jù)協(xié)議消息,并且判斷出 需要發(fā)送用戶數(shù)據(jù)協(xié)議消息回應(yīng)包后,該數(shù)據(jù)處理線程發(fā)送所述 用戶數(shù)據(jù)協(xié)議消息回應(yīng)包。 所述方法,其中,所述步驟B中,所述用戶數(shù)據(jù)協(xié)議消息保存至用戶 數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表。
所述方法,其中,所述用戶數(shù)據(jù)協(xié)議消息是采用輪循式保存到所述用 戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中。
所述方法,其中,所述步驟C中,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程采用循環(huán)周期式 讀取所保存的用戶數(shù)據(jù)協(xié)議消息。
所述方法,其中,所述循環(huán)周期的設(shè)定包括如下步驟 Cl、設(shè)定初始化循環(huán)周期;
C2、測定此時處理所述用戶數(shù)據(jù)協(xié)議消息的最高性能; C3、減少所述循環(huán)周期,并測定當(dāng)前處理所述用戶數(shù)據(jù)協(xié)議消息的最 高性能;
C4、判斷當(dāng)前測定的最高性能比上一次測定的最高性能是否有所提高; C5、如果否,則記錄上一次設(shè)定的循環(huán)周期為最終的循環(huán)周期。 本發(fā)明采用多線程UDP消息數(shù)據(jù)處理才莫式,消息接收線程不再是直接 發(fā)送消息數(shù)據(jù)給數(shù)據(jù)處理線程,而是將數(shù)據(jù)寫入消息數(shù)據(jù)鏈表中后,再由 轉(zhuǎn)發(fā)數(shù)據(jù)線程從UDP數(shù)據(jù)鏈表中定時循環(huán)讀出UDP數(shù)據(jù),送往數(shù)據(jù)處理 線程;同時,UDP消息接收線程單元也不再直接發(fā)送UDP回應(yīng)包,而是通 過數(shù)據(jù)處理線程發(fā)出UDP回應(yīng)包。通過這些機制,可以極大地減少UDP 消息接收線程的所處理的事務(wù),解決了此處的性能瓶頸問題,同時通過設(shè)
立專門的數(shù)據(jù)處理線程,增強了 UDP數(shù)據(jù)處理的能力。
圖l是本發(fā)明的多核處理器架構(gòu)下,UDP消息處理模式結(jié)構(gòu)示意圖2是本發(fā)明的UDP消息數(shù)據(jù)處理方法流程圖3是本發(fā)明的轉(zhuǎn)發(fā)數(shù)據(jù)線程循環(huán)周期設(shè)定方法流程圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明的較佳實施例作進一步詳細說明。 如圖1所示,本發(fā)明提供了一種處理用戶數(shù)據(jù)協(xié)議消息的系統(tǒng),其采 用多核處理器架構(gòu),該系統(tǒng)包括用戶數(shù)據(jù)協(xié)議(UDP)消息接收線程110、 UDP數(shù)據(jù)鏈表、轉(zhuǎn)發(fā)數(shù)據(jù)線程及數(shù)據(jù)處理線程;其中,在本實施例中,UDP 消息數(shù)據(jù)鏈表的數(shù)目為10個,這10個鏈表數(shù)目組成一個UDP消息數(shù)據(jù)鏈 表組120,與所述UDP消息接收線程110交互適配連接,同時,所述轉(zhuǎn)發(fā) 數(shù)據(jù)線程及數(shù)據(jù)處理線程的數(shù)目分別為10個,且分別組成轉(zhuǎn)發(fā)數(shù)據(jù)線程組 130及數(shù)據(jù)處理線程組140,而所述轉(zhuǎn)發(fā)數(shù)據(jù)線程及數(shù)據(jù)處理線程之間相互 交互適配連接,且所述轉(zhuǎn)發(fā)數(shù)據(jù)線程與所述UDP消息數(shù)據(jù)鏈表之間交互適 配連接。
其中,所述UDP消息接收線程110負責(zé)初始化并綁定UDP端口 ,接 收發(fā)往該UDP端口的UDP消息,并將該UDP消息輪循式寫入UDP消息 數(shù)據(jù)鏈表中。
其中,所述UDP消息數(shù)據(jù)鏈表組120用于接收并保存所述UDP消息, 且將第1個UDP消息存放到UDP消息數(shù)據(jù)鏈表1中,第2個UDP消息存 到UDP消息數(shù)據(jù)鏈表2中,其它依次類推;當(dāng)?shù)?0 UDP消息存放到UDP 消息數(shù)據(jù)鏈表1中后,緊接著輪#到的第11個UDP消息又存放到UDP消 息數(shù)據(jù)鏈表1中,第12個UDP消息又存放到UDP消息數(shù)據(jù)鏈表2中,采 用如此輪循式保存UDP消息。
其中,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程組130負責(zé)從UDP消息數(shù)據(jù)鏈表組120中讀 取UDP消息,然后將該UDP消息轉(zhuǎn)發(fā)至數(shù)據(jù)處理線程組140中,且轉(zhuǎn)發(fā) 數(shù)據(jù)線程1負責(zé)從UDP消息數(shù)據(jù)鏈表1中讀取UDP消息,然后將該UDP 消息轉(zhuǎn)發(fā)至數(shù)據(jù)處理線程1,同時從UDP消息數(shù)據(jù)鏈表1中將讀出的UDP 消息數(shù)據(jù)刪除掉,并且定期循環(huán)式地讀取UDP消息;同理,轉(zhuǎn)發(fā)數(shù)據(jù)線程 2負責(zé)從UDP消息數(shù)據(jù)鏈表2中讀取UDP消息,然后將該UDP消息轉(zhuǎn)發(fā) 至數(shù)據(jù)處理線程2,同時從UDP消息數(shù)據(jù)鏈表2中將讀出的UDP消息數(shù)據(jù) 刪除掉,,并且定期循環(huán)式地讀取UDP消息;其它依次類推。
其中,所述凄t據(jù)處理線程組140負責(zé)處理所述轉(zhuǎn)發(fā)數(shù)據(jù)線程組130發(fā) 出的UDP消息的業(yè)務(wù)流程,并且根據(jù)需要發(fā)出UDP消息回應(yīng)包。在所述 數(shù)據(jù)處理線程組140處理UDP消息時,數(shù)據(jù)處理線程l負責(zé)處理轉(zhuǎn)發(fā)數(shù)據(jù) 線程1發(fā)出的UDP消息的業(yè)務(wù)流程,并相應(yīng)地發(fā)出UDP回應(yīng)包,并且定 期循環(huán)式地UDP消息回應(yīng)包;同理,數(shù)據(jù)處理線程2負責(zé)處理轉(zhuǎn)發(fā)數(shù)據(jù)線 程2發(fā)出的UDP消息的業(yè)務(wù)流程,并相應(yīng)地發(fā)出UDP回應(yīng)包,并且定期 循環(huán)式地UDP消息回應(yīng)包;其它依次類4,。
本發(fā)明提供了一種處理用戶數(shù)據(jù)協(xié)議消息的方法,請參閱附圖2所示, 其實現(xiàn)流程包括如下步驟
201 、將UDP消息接收線程綁定到UDP端口 ;
202、 UDP消息接收線程接收UDP端口的UDP消息;
203、 UDP消息接收線程將UDP消息輪循式地保存到UDP消息數(shù)據(jù)鏈 表中;.
204、 轉(zhuǎn)發(fā)數(shù)據(jù)線程循環(huán)周期式地從對應(yīng)的UDP消息數(shù)據(jù)鏈表中讀出 保存的UDP消息,并從UDP消息數(shù)據(jù)鏈表中刪除所讀出的UDP消息;
205、 轉(zhuǎn)發(fā)數(shù)據(jù)線程判斷讀取的UDP消息是否合法,如果合法,則轉(zhuǎn) 入步驟206,否則丟棄此UDP消息,轉(zhuǎn)入步驟210;
206、 轉(zhuǎn)發(fā)數(shù)據(jù)線程發(fā)送UDP消息至對應(yīng)的數(shù)據(jù)處理線程;
207、 數(shù)據(jù)處理線程接收并處理所述UDP消息;
208、 數(shù)據(jù)處理線程處理完所述UDP消息后,判斷是否需要發(fā)送UDP 消息回應(yīng)包,如果是,則轉(zhuǎn)入步驟209,否則轉(zhuǎn)入步驟210;
209 、數(shù)據(jù)處理線程發(fā)出UDP消息回應(yīng)包; 210、流:程結(jié)束。
其中,步驟204中,當(dāng)轉(zhuǎn)發(fā)數(shù)據(jù)線程循環(huán)周期式讀取UDP消息時,請 參閱附圖3所示,該循環(huán)周期的設(shè)定方法包括如下步驟
301、 設(shè)定初始化循環(huán)周期為100毫秒;
302、 測定此時處理UDP消息的最高性能;
303、 循環(huán)周期減小1毫秒;
304、 測定當(dāng)前處理UDP消息的最高性能;
$05、判斷當(dāng)前測定的最高性能比上一次測定的最高性能是否有所提 高,如果是,則轉(zhuǎn)入步驟303,否則轉(zhuǎn)入步驟306;
306、 記錄上一次設(shè)定的循環(huán)周期,即為最終得到的循環(huán)周期時間;
307、 流程結(jié)束。
綜上所述,本發(fā)明采用多線程UDP消息數(shù)據(jù)處理模式,消息接收線程 不再是直接發(fā)送消息數(shù)據(jù)給數(shù)據(jù)處理線程,而是將數(shù)據(jù)寫入消息數(shù)據(jù)鏈表 中后,再由轉(zhuǎn)發(fā)數(shù)據(jù)線程從UDP數(shù)據(jù)鏈表中定時循環(huán)讀出UDP數(shù)據(jù),送 往數(shù)據(jù)處理線程;同時,UDP消息接收線程單元也不再直接發(fā)送UDP回應(yīng) 包,而是通過數(shù)據(jù)處理線程發(fā)出UDP回應(yīng)包。通過這些機制,可以極大地 減少UDP消息接收線程的所處理的事務(wù),解決了此處的性能瓶頸問題,同 時通過設(shè)立專門的數(shù)據(jù)處理線程,增強了 UDP數(shù)據(jù)處理的能力。
應(yīng)當(dāng)理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以 改進或變換,而所有這些改進和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護 范圍。
權(quán)利要求
1、一種處理用戶數(shù)據(jù)協(xié)議消息的系統(tǒng),其包括用戶數(shù)據(jù)協(xié)議消息接收線程,綁定在用戶數(shù)據(jù)協(xié)議端口上,用于初始化所述用戶數(shù)據(jù)協(xié)議端口及接收用戶數(shù)據(jù)協(xié)議消息,并且輸出該用戶數(shù)據(jù)協(xié)議消息,及數(shù)據(jù)處理線程;其特征在于,該系統(tǒng)還包括用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表,用于接收并保存所述用戶數(shù)據(jù)協(xié)議消息接收線程輸出的用戶數(shù)據(jù)協(xié)議消息;及轉(zhuǎn)發(fā)數(shù)據(jù)線程,用于讀取保存在所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中的用戶數(shù)據(jù)協(xié)議消息,并且將該用戶數(shù)據(jù)協(xié)議消息輸出至所述數(shù)據(jù)處理線程;所述數(shù)據(jù)處理線程,用于處理所述用戶數(shù)據(jù)協(xié)議消息,并輸出用戶數(shù)據(jù)協(xié)議消息回應(yīng)包。
2、 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述用戶數(shù)據(jù)協(xié)議消 息數(shù)據(jù)鏈表數(shù)目為一個或多個,并且所述轉(zhuǎn)發(fā)數(shù)據(jù)線程及所述數(shù)據(jù)處理線 程的數(shù)目與所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表的數(shù)目相適配。
3、 根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述用戶數(shù)據(jù)協(xié) 議消息是釆用輪循式保存到所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中。
4、 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程采 用循環(huán)周期式讀取保存在所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中的用戶數(shù)據(jù)協(xié) 議消息。
5、 根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述轉(zhuǎn)發(fā)數(shù)據(jù)線程循 環(huán)讀取所述用戶數(shù)據(jù)協(xié)議消息的初始循環(huán)周期為100毫秒。
6、 一種處理用戶數(shù)據(jù)協(xié)議消息的方法,包括如下步驟A、 將用戶數(shù)據(jù)協(xié)議消息接收線程綁定在用戶數(shù)據(jù)協(xié)議端口上;B、 所述用戶數(shù)據(jù)協(xié)議消息接收線程從所述用戶數(shù)據(jù)協(xié)議端口接收 用戶數(shù)據(jù)協(xié)議消息,并且保存該用戶數(shù)據(jù)協(xié)議消息;C、 轉(zhuǎn)發(fā)數(shù)據(jù)線程讀取并判斷出所述用戶數(shù)據(jù)協(xié)議消息合法后,將該 用戶數(shù)據(jù)協(xié)議消息轉(zhuǎn)發(fā)至數(shù)據(jù)處理線程;D、 所述數(shù)據(jù)處理線程接收并處理該用戶數(shù)據(jù)協(xié)議消息,并且判斷出 需要發(fā)送用戶數(shù)據(jù)協(xié)議消息回應(yīng)包后,該數(shù)據(jù)處理線程發(fā)送所述 用戶數(shù)據(jù)協(xié)議消息回應(yīng)包。
7、 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟B中,所述 用戶數(shù)據(jù)協(xié)議消息保存至用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述用戶數(shù)據(jù)協(xié)議消 息是采用輪循式保存到所述用戶數(shù)據(jù)協(xié)議消息數(shù)據(jù)鏈表中。
9、 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟C中,所述
10、 根據(jù)權(quán)利要求9所述的方法,其特征在于,所述循環(huán)周期的設(shè)定 包括如下步驟Cl、設(shè)定初始化循環(huán)周期;C2、測定此時處理所述用戶數(shù)據(jù)協(xié)議消息的最高性能; C3、減少所述循環(huán)周期,并測定當(dāng)前處理所述用戶數(shù)據(jù)協(xié)議消息的最 高性能;C4、判斷當(dāng)前測定的最高性能比上一次測定的最高性能是否有所提高; C5、如果否,則記錄上一次設(shè)定的循環(huán)周期為最終的循環(huán)周期。
全文摘要
本發(fā)明公開了一種處理用戶數(shù)據(jù)協(xié)議消息的方法及其系統(tǒng),應(yīng)用于通信技術(shù)領(lǐng)域,該系統(tǒng)包括步驟UDP消息接收線程,用于接收并輸出UDP消息,及數(shù)據(jù)處理線程;其中,該系統(tǒng)還包括UDP消息數(shù)據(jù)鏈表,用于接收并保存UDP消息接收線程輸出的UDP消息;及轉(zhuǎn)發(fā)數(shù)據(jù)線程,用于讀取保存在UDP消息數(shù)據(jù)鏈表中的UDP消息,并且將該UDP消息輸出至數(shù)據(jù)處理線程;所述數(shù)據(jù)處理線程,用于處理所述用戶數(shù)據(jù)協(xié)議消息,并輸出用戶數(shù)據(jù)協(xié)議消息回應(yīng)包。采用本發(fā)明技術(shù)方案,可以極大地減少UDP消息接收線程的所處理的事務(wù),解決了此處的性能瓶頸問題,同時通過設(shè)立專門的數(shù)據(jù)處理線程,增強了UDP數(shù)據(jù)處理的能力。
文檔編號H04L29/02GK101179552SQ200710124858
公開日2008年5月14日 申請日期2007年12月4日 優(yōu)先權(quán)日2007年12月4日
發(fā)明者史永奇, 吳麗梅, 申凌海 申請人:中興通訊股份有限公司