一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架的制作方法
【專利摘要】本發(fā)明提供一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架,涉及網(wǎng)絡(luò)通信系統(tǒng)領(lǐng)域,本發(fā)明可靠的、面向連接的TCP/IP協(xié)議,通信內(nèi)容封裝為統(tǒng)一格式的消息,消息處理基于隊(duì)列的組織形式,通過多線程增加并發(fā)性,提高處理效率,邏輯處理單元獨(dú)立,保證系統(tǒng)的可擴(kuò)展性。
【專利說明】一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架
[0001]【技術(shù)領(lǐng)域】
本發(fā)明涉及一種網(wǎng)絡(luò)通信系統(tǒng),具體地說是一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架。【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的發(fā)展,網(wǎng)絡(luò)通信的結(jié)構(gòu)的使用也越來越廣泛。目前,在網(wǎng)絡(luò)通信領(lǐng)域,B/S和C/S架構(gòu)得到了廣泛的使用。
[0003]C/S (Client/Server)結(jié)構(gòu),即客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu)。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu)。B/S (Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。
[0004]無論是C/S結(jié)構(gòu)還是B/S結(jié)構(gòu),Client/Browser端和Server端都要進(jìn)行邏輯處理,相對(duì)而言,Server端承擔(dān)的壓力更大,需要處理的任務(wù)更多,邏輯復(fù)雜度更高。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是提供一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架。通過該框架可以實(shí)現(xiàn)多線程,高效率的信息處理,并且邏輯和框架相對(duì)獨(dú)立,提供較好的可擴(kuò)展性。
[0006]本發(fā)明適用于網(wǎng)絡(luò)通信中的客戶端和服務(wù)端,通信任務(wù)量較大,邏輯處理復(fù)雜的模塊。在后面的描述中,以服務(wù)端為例來描述。
[0007]本發(fā)明采用基于隊(duì)列的數(shù)據(jù)組織方式,管理待處理消息。采用多線程的并發(fā)方式,提高處理效率。采用獨(dú)立邏輯處理單元,保證系統(tǒng)可擴(kuò)展性。
[0008]本發(fā)明的通信是基于可靠的、面向連接的TCP/IP協(xié)議,通信內(nèi)容統(tǒng)稱為消息,消息的組織形式是系統(tǒng)定義的,邏輯處理單元會(huì)進(jìn)行消息的封裝和解析。當(dāng)前,比較常用的有XML, j son 等。
[0009]本發(fā)明中包含兩個(gè)隊(duì)列,一個(gè)保存收到的消息,為待處理隊(duì)列,一個(gè)保存準(zhǔn)備回復(fù)的消息,稱為待發(fā)送隊(duì)列。服務(wù)端收到消息時(shí),直接將消息放入待處理隊(duì)列的尾部。當(dāng)一個(gè)消息處理完畢后,將該消息放入待回復(fù)隊(duì)列的尾部。需要回復(fù)消息時(shí),從待發(fā)送隊(duì)列頭取出一個(gè)消息回復(fù)。
[0010]針對(duì)隊(duì)列中的每一個(gè)消息,都有一個(gè)單獨(dú)的線程來進(jìn)行處理,保證消息之間的獨(dú)立性。線程的數(shù)量和分配是由線程池來控制的。當(dāng)隊(duì)列尾新增一條消息,線程池就會(huì)分配一個(gè)線程來處理這條消息。若線程池中所有的線程都被分配出來,新的消息則需要等待,待線程池中有空閑線程時(shí)才會(huì)被處理。
[0011]邏輯處理單元,負(fù)責(zé)具體的邏輯處理動(dòng)作,如消息解析,消息分類,根據(jù)不同的消息類型執(zhí)行不同的業(yè)務(wù)邏輯等。線程池中的線程被分配來處理消息,將消息交給邏輯處理單元來處理。邏輯處理單元經(jīng)過簡(jiǎn)單解析后,確定消息類型,從而決定后續(xù)的處理邏輯。待邏輯處理單元處理完成后,將完成的結(jié)果也封裝為消息,放入待發(fā)送隊(duì)列,等待發(fā)送。[0012]服務(wù)端在多任務(wù)大壓力情況下的邏輯處理框架,通過隊(duì)列的形式管理連接,通過多線程的方式提高效率,通過框架形式保證邏輯和框架的分離,保證可擴(kuò)展性。
【專利附圖】
【附圖說明】
[0013]圖1是本發(fā)明組成結(jié)構(gòu)的關(guān)系圖;
圖2是本發(fā)明消息的處理流程示意圖。
【具體實(shí)施方式】
[0014]下面將結(jié)合附圖對(duì)本發(fā)明進(jìn)行更加詳細(xì)的描述:
1、圖1是本發(fā)明的組織結(jié)構(gòu)關(guān)系圖,本發(fā)明基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架共包含三個(gè)部分:TCP服務(wù)端,隊(duì)列管理單元,邏輯處理單元。
[0015]TCP服務(wù)端負(fù)責(zé)接收從Client端發(fā)出的消息,并向Client回復(fù)消息。隊(duì)列管理單元包括兩個(gè)隊(duì)列,待處理隊(duì)列和待發(fā)送隊(duì)列。待處理隊(duì)列中保存等待處理的消息,待發(fā)送隊(duì)列中保存等待發(fā)送的消息。邏輯處理單元包括線程池,通信模塊和處理邏輯。線程池負(fù)責(zé)分配線程處理待處理隊(duì)列中的消息,處理邏輯是針對(duì)不同消息的邏輯處理,可以進(jìn)行定制。當(dāng)某消息的處理邏輯中,需要向其他的通信端(如指定的TCP服務(wù)端)獲取消息時(shí),通過通信模塊進(jìn)行獲取。
[0016]2、圖2為Server端收到消息的處理流程。Server端收到消息后,將消息放入隊(duì)列管理單元的待處理隊(duì)列中。待處理隊(duì)列將新收到的消息插入隊(duì)尾,將最先收到的消息放在隊(duì)頭,等待邏輯處理模塊從隊(duì)列頭取消息。邏輯處理單元中包含的線程池分配線程來處理隊(duì)列中的消息。如有必要,邏輯處理單元會(huì)通過通信模塊從其他的通信節(jié)點(diǎn)獲取所需信息。邏輯處理單元處理消息完成后,將返回的信息封裝為消息,放入待發(fā)送隊(duì)列中。TCP服務(wù)端會(huì)將待發(fā)送隊(duì)列中的消息取出,回復(fù)給Client端。
【權(quán)利要求】
1.一種基于隊(duì)列的網(wǎng)絡(luò)通信模塊處理框架,其特征在于:可靠的、面向連接的TCP/IP協(xié)議,通信內(nèi)容封裝為統(tǒng)一格式的消息,消息處理基于隊(duì)列的組織形式,通過多線程增加并發(fā)性,提高處理效率,邏輯處理單元獨(dú)立,保證系統(tǒng)的可擴(kuò)展性。
2.根據(jù)權(quán)利I所要求的方法,其特征在于:上述的消息格式包括以下特征: O消息格式是統(tǒng)一的和靈活的,可以采取常見格式,也可以自定義; 2)消息是可以封裝和解析的; 3)消息格式是唯一的,其他格式不可。
3.根據(jù)權(quán)利I所要求的方法,隊(duì)列包括兩個(gè): 1)待處理隊(duì)列,用于保存Server端新收到的消息; 2)待發(fā)送隊(duì)列,用于保存等待Server端發(fā)送的消息; 3 )隊(duì)列操作時(shí)加鎖,多個(gè)線程不能同時(shí)操作隊(duì)列。
4.根據(jù)權(quán)利3所要求的方法,其特征在于:隊(duì)列的組織形式包括以下幾種: O新加入內(nèi)容放入隊(duì)列尾,最先加入的內(nèi)容在隊(duì)列頭; 2)只向隊(duì)列尾插入數(shù)據(jù),只從隊(duì)列頭取數(shù)據(jù); 3 )隊(duì)列操作時(shí)加鎖,多個(gè)線程不能同時(shí)操作隊(duì)列。
5.根據(jù)權(quán)利I所要求的方法,邏輯處`理單元包含以下模塊: 1)線程池,負(fù)責(zé)分派線程處理待處理隊(duì)列中的消息; 2)邏輯處理模塊,負(fù)責(zé)具體的邏輯處理; 3)通信模塊,若在邏輯處理的過程中,需要與其他通信節(jié)點(diǎn)進(jìn)行通信,通過通信模塊來進(jìn)行。
6.根據(jù)權(quán)利5所要求的方法,線程池包括以下功能: 1)在初始狀態(tài)下,創(chuàng)建指定數(shù)量的線程; 2)當(dāng)發(fā)現(xiàn)待處理隊(duì)列不為空時(shí),查看是否有空閑線程; 3)若有空閑線程,分派該線程處理; 4)若沒有空閑線程,等待有線程空閑后,分派該線程處理待處理隊(duì)列中的消息。
7.根據(jù)權(quán)利5所要求的方法,線程池中的每個(gè)線程包含以下步驟:
1)將本線程加入線程池; 2)線程被分派,從待處理隊(duì)列中取出隊(duì)列頭,進(jìn)行處理; 3)執(zhí)行邏輯處理單元對(duì)應(yīng)該消息的處理動(dòng)作;
4)處理完成,線程返回線程池,等待被分派。
8.根據(jù)權(quán)利5所要求的方法,邏輯處理模塊的內(nèi)容包括: 1)支持對(duì)消息的封裝和解析; 2)支持對(duì)特定消息可定制的處理邏輯。
9.根據(jù)權(quán)利5所要求的方法,通信模塊的內(nèi)容包括: O該模塊被邏輯處理模塊調(diào)用;
2)該模塊的協(xié)議包括但不僅限于TCP/IP協(xié)議; 3)該模塊的通信邏輯可以和本系統(tǒng)消息格式一致,也可以不一致。
【文檔編號(hào)】H04L29/06GK103888454SQ201410092386
【公開日】2014年6月25日 申請(qǐng)日期:2014年3月14日 優(yōu)先權(quán)日:2014年3月14日
【發(fā)明者】王倩, 王旭 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司