消息處理線程的控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及到業(yè)務(wù)系統(tǒng)消息處理領(lǐng)域,特別涉及到一種消息處理線程的控制方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)在業(yè)務(wù)系統(tǒng)越來越龐大,動輒就是成千上萬的用戶同時在線,對請求的響應(yīng)速度要求也越來越高,對支撐業(yè)務(wù)系統(tǒng)運行的應(yīng)用服務(wù)器來說也就提出了更高的要求,需要能夠做到充分利用服務(wù)器的物理性能,來處理大量客戶端并發(fā)的業(yè)務(wù)請求消息。
[0003]參照圖1,常見的應(yīng)用服務(wù)器處理客戶端并發(fā)的業(yè)務(wù)請求消息的過程如下:
[0004]1、應(yīng)用服務(wù)器100接收從客戶端101、102、103發(fā)送來的業(yè)務(wù)請求消息,交給消息分發(fā)器104中。
[0005]2、消息分發(fā)器104將接收到的各個業(yè)務(wù)請求消息分派給消息處理器105處理,分配一個線程池來處理接收到的各個業(yè)務(wù)請求消息,且每一個接收到業(yè)務(wù)請求消息使用一個線程來處理,在該業(yè)務(wù)請求處理完后將該線程釋放回線程池。
[0006]3、通過業(yè)務(wù)請求處理線程池的大小來控制并發(fā)處理業(yè)務(wù)請求的數(shù)量。
[0007]但是,由于并發(fā)用戶的數(shù)量越來越多,業(yè)務(wù)請求響應(yīng)時間又不能降低,在這種傳統(tǒng)模式下的業(yè)務(wù)請求消息的處理遇到了一些問題:
[0008]A、傳統(tǒng)模式下,請求響應(yīng)時間包括:業(yè)務(wù)請求的真正處理時間加上在消息隊列中的等待時間。如果并發(fā)用戶業(yè)務(wù)請求太多,超過業(yè)務(wù)請求處理線程池中的線程數(shù)量,那么就會有業(yè)務(wù)請求處于等待狀態(tài),直到其他業(yè)務(wù)請求處理完之后釋放線程。在大規(guī)模用戶并發(fā)業(yè)務(wù)請求消息的情況下,業(yè)務(wù)請求消息在消息隊列中等待的時間就會更長,業(yè)務(wù)請求的響應(yīng)時間就會急劇增加。
[0009]B、如果擴大線程池,增加線程的數(shù)量,在線程數(shù)量不超過1000的情況下還能解決一部分問題。如果數(shù)量再大一些,到幾千、上萬,業(yè)務(wù)系統(tǒng)的處理能力就會開始下降。
[0010]C、傳統(tǒng)的多線程模式下,隨著業(yè)務(wù)邏輯越來越復(fù)雜,編程的難度大幅增加,導(dǎo)致編程效率的下降。經(jīng)常在編寫一段代碼時,要反復(fù)的思考、模擬多線程情況下可能遇到的多線程之間的同步問題。
[0011]D、不能有效地利用的系統(tǒng)提供的異步1 (Input/Output,輸入/輸出)機制,因為線程入口是同步的,需要在業(yè)務(wù)請求消息返回時獲得返回結(jié)果給客戶端,所以即使業(yè)務(wù)系統(tǒng)提供了異步1機制,也需要等到異步回調(diào)以后,線程才能繼續(xù)往下運行。
[0012]基于上述分析,現(xiàn)有通過增加線程數(shù)量的方式來解決大規(guī)模用戶并發(fā)業(yè)務(wù)請求對業(yè)務(wù)系統(tǒng)的影響主要包括:
[0013]一、隨著線程數(shù)量的增加,業(yè)務(wù)系統(tǒng)會為每個線程分配線程堆棧,線程數(shù)量增多就會占用很大部分的系統(tǒng)內(nèi)存,從而導(dǎo)致真正的業(yè)務(wù)處理可用的內(nèi)存資源減少;
[0014]二、線程數(shù)量增加之后,線程調(diào)度所消耗的CPU開銷明顯增多,又會與業(yè)務(wù)處理爭用CPU資源,造成業(yè)務(wù)處理速度降低。
【發(fā)明內(nèi)容】
[0015]本發(fā)明的主要目的為提供一種消息處理線程的控制方法及裝置,旨在降低業(yè)務(wù)請求消息在消息隊列中等待的時間,進而降低業(yè)務(wù)請求的響應(yīng)時間,提高業(yè)務(wù)系統(tǒng)的業(yè)務(wù)處理效率。
[0016]本發(fā)明提出一種消息處理線程的控制方法,該方法包括:
[0017]當(dāng)接收到業(yè)務(wù)請求消息時,確定接收的業(yè)務(wù)請求消息中的業(yè)務(wù)內(nèi)容;
[0018]將確定的業(yè)務(wù)內(nèi)容按照類型分為不同類型的業(yè)務(wù),將各個不同類型的業(yè)務(wù)分別發(fā)送至對應(yīng)的線程進行處理。
[0019]優(yōu)選地,所述業(yè)務(wù)類型包括計算類型和1操作類型,所述將確定的業(yè)務(wù)內(nèi)容按照類型分為不同類型的業(yè)務(wù),將各個不同類型的業(yè)務(wù)分別發(fā)送至對應(yīng)的線程進行處理的步驟包括:
[0020]將確定的業(yè)務(wù)內(nèi)容按照類型分為計算業(yè)務(wù)和1操作業(yè)務(wù),將1操作業(yè)務(wù)按照操作類型分為不同操作類型的1操作業(yè)務(wù);
[0021]將分類后的計算業(yè)務(wù)發(fā)送至計算線程進行處理,將各個不同操作類型的1操作業(yè)務(wù)分別發(fā)送至對應(yīng)類型的1操作線程進行處理。
[0022]優(yōu)選地,在所述將分類后的計算業(yè)務(wù)發(fā)送至計算線程進行處理,將各個不同操作類型的1操作業(yè)務(wù)分別發(fā)送至對應(yīng)類型的1操作線程進行處理的步驟之后,該方法包括:
[0023]在完成1操作之后的業(yè)務(wù)內(nèi)容需要進行計算業(yè)務(wù)時,將完成1操作之后的業(yè)務(wù)內(nèi)容發(fā)送至所述計算線程進行處理。
[0024]優(yōu)選地,在所述將分類后的計算業(yè)務(wù)發(fā)送至計算線程進行處理,將各個不同操作類型的1操作業(yè)務(wù)分別發(fā)送至對應(yīng)類型的1操作線程進行處理的步驟之后,該方法還包括:
[0025]在完成計算操作之后的業(yè)務(wù)內(nèi)容需要進行1操作業(yè)務(wù)時,將完成計算操作之后的業(yè)務(wù)內(nèi)容發(fā)送至對應(yīng)類型的1操作線程進行處理。
[0026]優(yōu)選地,當(dāng)接收到多個業(yè)務(wù)請求消息時,該方法還包括:
[0027]將多個業(yè)務(wù)請求消息中的同一類型的計算業(yè)務(wù)發(fā)送至同一個計算線程進行處理。
[0028]本發(fā)明還提出一種消息處理線程的控制裝置,該裝置包括:
[0029]處理模塊,用于當(dāng)接收到業(yè)務(wù)請求消息時,確定接收的業(yè)務(wù)請求消息中的業(yè)務(wù)內(nèi)容 '及
[0030]將確定的業(yè)務(wù)內(nèi)容按照類型分為不同類型的業(yè)務(wù);
[0031]數(shù)據(jù)接發(fā)模塊,用于將各個不同類型的業(yè)務(wù)分別發(fā)送至對應(yīng)的線程進行處理。
[0032]優(yōu)選地,所述業(yè)務(wù)類型包括計算類型和1操作類型,
[0033]所述處理模塊,用于將確定的業(yè)務(wù)內(nèi)容按照類型分為計算業(yè)務(wù)和1操作業(yè)務(wù),將1操作業(yè)務(wù)按照操作類型分為不同操作類型的1操作業(yè)務(wù);
[0034]所述數(shù)據(jù)接發(fā)模塊,用于將分類后的計算業(yè)務(wù)發(fā)送至計算線程進行處理,將各個不同操作類型的1操作業(yè)務(wù)分別發(fā)送至對應(yīng)類型的1操作線程進行處理。
[0035]優(yōu)選地,所述數(shù)據(jù)接發(fā)模塊,還用于在完成1操作之后的業(yè)務(wù)內(nèi)容需要進行計算業(yè)務(wù)時,將完成1操作之后的業(yè)務(wù)內(nèi)容發(fā)送至所述計算線程進行處理。
[0036]優(yōu)選地,所述數(shù)據(jù)接發(fā)模塊,還用于在完成計算操作之后的業(yè)務(wù)內(nèi)容需要進行1操作業(yè)務(wù)時,將完成計算操作之后的業(yè)務(wù)內(nèi)容發(fā)送至對應(yīng)類型的1操作線程進行處理。
[0037]優(yōu)選地,當(dāng)接收到多個業(yè)務(wù)請求消息時,所述數(shù)據(jù)接發(fā)模塊,還用于將多個業(yè)務(wù)請求消息中的同一類型的計算業(yè)務(wù)發(fā)送至同一個計算線程進行處理。
[0038]相對現(xiàn)有技術(shù),本發(fā)明通過將接收的業(yè)務(wù)請求消息中的業(yè)務(wù)內(nèi)容按類型分為不同類型的業(yè)務(wù),將不同類型的業(yè)務(wù)內(nèi)容發(fā)送至對應(yīng)的不同線程進行處理,在大規(guī)模用戶并發(fā)業(yè)務(wù)請求消息的情況下,降低業(yè)務(wù)請求消息在消息隊列中等待的時間,進而降低業(yè)務(wù)請求的響應(yīng)時間,提聞業(yè)務(wù)系統(tǒng)的業(yè)務(wù)處理效率。
【附圖說明】
[0039]圖1為業(yè)務(wù)系統(tǒng)結(jié)構(gòu)圖;
[0040]圖2為本發(fā)明消息處理線程的控制方法的第一實施例的流程示意圖;
[0041]圖3為本發(fā)明消息處理線程的控制方法的第二實施例的流程示意圖;
[0042]圖4為本發(fā)明消息處理線程的控制方法的第三實施例的流程示意圖;
[0043]圖5為本發(fā)明消息處理線程的控制裝置的較佳實施例的具體架構(gòu)圖。
[0044]本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
【具體實施方式】
[0045]應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0046]如圖2所示,為本發(fā)明消息處理線程的控制方法的第一實施例的流程示意圖。
[0047]需要強調(diào)的是:圖2所示流程圖僅為一個較佳實施例,本領(lǐng)域的技術(shù)人員當(dāng)知,任何圍繞本發(fā)明思想構(gòu)建的實施例都不應(yīng)脫離于如下技術(shù)方案涵蓋的范圍:
[0048]當(dāng)接收到客戶端發(fā)送來的業(yè)務(wù)請求消息時,確定接收的業(yè)務(wù)請求消息中的業(yè)務(wù)內(nèi)容;將確定的業(yè)務(wù)內(nèi)容按照類型分為不同類型的業(yè)務(wù),將各個不同類型的業(yè)務(wù)分別發(fā)送至對應(yīng)的線程進行處理。
[0049]以下是本實施例逐步實現(xiàn)消息處理線程的控制的具體步驟:
[0050]步驟S11,當(dāng)接收到業(yè)務(wù)請求消息時,確定接收的業(yè)務(wù)請求消息中的業(yè)務(wù)內(nèi)容。