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