国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置的制作方法

      文檔序號(hào):6444456閱讀:291來(lái)源:國(guó)知局
      專利名稱:一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)通信網(wǎng)絡(luò)技術(shù)和服務(wù)器技術(shù)領(lǐng)域,具體涉及一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置。
      背景技術(shù)
      服務(wù)器,是指在計(jì)算機(jī)通信網(wǎng)絡(luò)中的一個(gè)管理資源對(duì)外提供業(yè)務(wù)服務(wù)的高性能計(jì)算機(jī)。服務(wù)器類型有很多,例如數(shù)據(jù)服務(wù)器、文件服務(wù)器、網(wǎng)頁(yè)服務(wù)器、流媒體服務(wù)器、搜索服務(wù)器等,它們偵聽(tīng)計(jì)算機(jī)通信網(wǎng)絡(luò)中來(lái)自計(jì)算機(jī)客戶端或移動(dòng)通信客戶端的業(yè)務(wù)請(qǐng)求, 并對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行響應(yīng)和處理,進(jìn)而為計(jì)算機(jī)客戶端或移動(dòng)通信客戶端提供各種不同的業(yè)務(wù)服務(wù),豐富了網(wǎng)絡(luò)應(yīng)用。計(jì)算機(jī)通信網(wǎng)絡(luò)中的服務(wù)器隨時(shí)都面臨著數(shù)量龐大的業(yè)務(wù)請(qǐng)求需要執(zhí)行處理,服務(wù)器對(duì)業(yè)務(wù)請(qǐng)求的處理能力自然也成為其業(yè)務(wù)服務(wù)質(zhì)量的一項(xiàng)重要衡量標(biāo)準(zhǔn),快速、高效的業(yè)務(wù)服務(wù)更能夠提升用戶的業(yè)務(wù)體驗(yàn)以及對(duì)業(yè)務(wù)服務(wù)產(chǎn)品的忠誠(chéng)度。
      為了提升服務(wù)器業(yè)務(wù)服務(wù)質(zhì)量,目前服務(wù)器都普遍采用了多線程并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的方式,以增強(qiáng)服務(wù)器的業(yè)務(wù)請(qǐng)求處理能力?,F(xiàn)有服務(wù)器通常所采用的多線程并發(fā)業(yè)務(wù)請(qǐng)求處理方式,是每當(dāng)一個(gè)請(qǐng)求到達(dá)的時(shí)候,服務(wù)器都新建一個(gè)線程對(duì)新到達(dá)的業(yè)務(wù)請(qǐng)求進(jìn)行處理,直至處理完畢以后再銷毀相應(yīng)的線程;這一方式雖然能夠完成對(duì)眾多業(yè)務(wù)請(qǐng)求的多線程并發(fā)處理,但若在較短時(shí)間內(nèi)有數(shù)量過(guò)于龐大的業(yè)務(wù)請(qǐng)求到達(dá)服務(wù)器時(shí),過(guò)多的業(yè)務(wù)請(qǐng)求處理線程很可能“壟斷”占用服務(wù)器的系統(tǒng)資源,使得服務(wù)器運(yùn)行效率驟然降低,反而出現(xiàn)業(yè)務(wù)請(qǐng)求處理的延時(shí)較長(zhǎng)甚至無(wú)響應(yīng)的情況;不僅如此,由于并發(fā)執(zhí)行大量的業(yè)務(wù)請(qǐng)求處理時(shí),服務(wù)器也同時(shí)需要大量地、不間斷地創(chuàng)建和銷毀線程,這無(wú)疑進(jìn)一步增加了服務(wù)器執(zhí)行業(yè)務(wù)請(qǐng)求處理的耗時(shí),并且大量地創(chuàng)建、銷毀線程自身也進(jìn)一步的消耗了服務(wù)器系統(tǒng)資源,更容易導(dǎo)致服務(wù)器無(wú)響應(yīng)、業(yè)務(wù)服務(wù)中斷的嚴(yán)重后果。發(fā)明內(nèi)容
      針對(duì)現(xiàn)有技術(shù)中存在的上述不足,本發(fā)明的目的在于提供一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置,使得服務(wù)器能夠保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,進(jìn)一步增強(qiáng)服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能。
      為實(shí)現(xiàn)上述目的,本發(fā)明采用了如下技術(shù)手段一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列,并分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后,重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,作為一種可選擇方案,所述“服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程”具體為,在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程, Nmax為預(yù)設(shè)最大線程數(shù);在服務(wù)器運(yùn)行過(guò)程中,所述“分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理”的具體分配調(diào)用步驟如下1)判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟2);否則執(zhí)行步驟4);2)判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟3);否則執(zhí)行步驟4);3)分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟1);4)經(jīng)延時(shí)At后,返回步驟1)。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,作為另一種可選擇方案,所述“服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程”具體為,在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建N個(gè)空閑的待用線程,且 N<Nmax, Nmax為預(yù)設(shè)最大線程數(shù);在服務(wù)器運(yùn)行過(guò)程中,所述“分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理”的具體分配調(diào)用步驟如下a)判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟b);否則執(zhí)行步驟e);b)判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟c);否則執(zhí)行步驟d);c)分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟a);d)判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax;若是,則執(zhí)行步驟 e);否則,再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟a);e)經(jīng)延時(shí)At后,返回步驟a)。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,進(jìn)一步,所述N的取值范圍為1/2 2/3倍預(yù)設(shè)最大線程數(shù)Nmax。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,進(jìn)一步,所述預(yù)設(shè)最大線程數(shù)Nmax的取值范圍為(1 士 10%)Nthr,Nthr為服務(wù)器目標(biāo)線程數(shù),且有Nthr= (1+Tw/Tc)Ncpu ;其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,進(jìn)一步,所述延時(shí)At的取值范圍為 50 500mso
      一種服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,包括創(chuàng)建模塊,用于預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程; 排隊(duì)模塊,用于在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列; 調(diào)度模塊,用于分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;狀態(tài)管理模塊,用于將被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置中,進(jìn)一步,所述創(chuàng)建模塊包括第一創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程,Nmax為預(yù)設(shè)最大線程數(shù);則所述調(diào)度模塊包括第一調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若否,則經(jīng)延時(shí)Δ t后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置中,進(jìn)一步,所述創(chuàng)建模塊包括第二創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí)創(chuàng)建N個(gè)空閑的待用線程,且N<NmaX,Nmax為預(yù)設(shè)最大線程數(shù);則所述調(diào)度模塊包括第二調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax ;若是,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。
      上述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置中,進(jìn)一步,所述預(yù)設(shè)最大線程數(shù)Nmax的取值范圍為(1 士 10%)Nthr,Nthr為服務(wù)器目標(biāo)線程數(shù),且有Nthr= (1+Tw/Tc)Ncpu ;其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。
      相比于現(xiàn)有技術(shù),本發(fā)明具有如下有益效果1、本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置通過(guò)分配調(diào)用有限數(shù)量的待用線程對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行處理,不僅有效控制了并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的線程數(shù)量,保證了服務(wù)器在運(yùn)行過(guò)程中始終能夠保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,還避免了創(chuàng)建、銷毀線程對(duì)業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間和系統(tǒng)資源的消耗,在縮短業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間的同時(shí)也能后利用更多的系統(tǒng)資源提高業(yè)務(wù)請(qǐng)求處理的執(zhí)行效率,從而進(jìn)一步增強(qiáng)了服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能。
      2、作為本發(fā)明方法和裝置的改進(jìn)方案,可以通過(guò)調(diào)整待用線程的創(chuàng)建時(shí)機(jī)以及待用線程的分配調(diào)用處理過(guò)程,優(yōu)化服務(wù)器啟動(dòng)運(yùn)行和運(yùn)行過(guò)程中的系統(tǒng)資源分配,并使得服務(wù)器能夠根據(jù)需要自行逐步提升業(yè)務(wù)請(qǐng)求處理性能。
      3、在本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置的應(yīng)用過(guò)程中,還可以根據(jù)具體應(yīng)用場(chǎng)合的服務(wù)器硬件條件以及服務(wù)器提供的業(yè)務(wù)服務(wù)情況,合理設(shè)置預(yù)設(shè)最大線程數(shù)Nmax 的值,讓服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能得到更為優(yōu)化和充分的利用。
      4、本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置可以廣泛應(yīng)用于任何業(yè)務(wù)的服務(wù)器當(dāng)中,讓服務(wù)器提供更加快速、高效的業(yè)務(wù)服務(wù),提升用戶的業(yè)務(wù)體驗(yàn)以及對(duì)業(yè)務(wù)服務(wù)產(chǎn)品CN 102541659 A的忠誠(chéng)度。


      圖1為本發(fā)明實(shí)施例一的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中執(zhí)行待用線程分配調(diào)用的流程框圖;圖2為本發(fā)明實(shí)施例二的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中執(zhí)行待用線程分配調(diào)用的流程框圖;圖3為本發(fā)明實(shí)施例三的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置的結(jié)構(gòu)示意圖。
      具體實(shí)施方式
      針對(duì)現(xiàn)有的服務(wù)器多線程并發(fā)業(yè)務(wù)請(qǐng)求處理方式難以保證業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,容易出現(xiàn)業(yè)務(wù)請(qǐng)求處理的延時(shí)較長(zhǎng)、服務(wù)器無(wú)響應(yīng)、甚至業(yè)務(wù)服務(wù)中斷等多方面的缺陷,本發(fā)明方法提出一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法。與現(xiàn)有的多線程并發(fā)業(yè)務(wù)請(qǐng)求處理方式不同,本發(fā)明方法通過(guò)服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列,并分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后,重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。由于服務(wù)器通過(guò)分配調(diào)用有限數(shù)量的待用線程對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行處理,不僅有效控制了并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的線程數(shù)量,避免了過(guò)多的業(yè)務(wù)請(qǐng)求處理線程“壟斷”占用服務(wù)器的系統(tǒng)資源而導(dǎo)致業(yè)務(wù)請(qǐng)求處理執(zhí)行效率驟然降低、處理延時(shí)較長(zhǎng)的情況,同時(shí)還使得服務(wù)器不需要再不間斷地反復(fù)創(chuàng)建、銷毀線程,大幅減少了反復(fù)創(chuàng)建、銷毀線程所消耗的時(shí)間和系統(tǒng)資源,從而讓服務(wù)器在運(yùn)行過(guò)程中能夠保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,進(jìn)一步增強(qiáng)了服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能。
      下面通過(guò)實(shí)施例對(duì)本發(fā)明的效果做進(jìn)一步說(shuō)明。
      實(shí)施例一本實(shí)施例以一對(duì)外提供數(shù)據(jù)搜索業(yè)務(wù)的搜索服務(wù)器為例,利用本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法執(zhí)行其數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理,借以說(shuō)明本發(fā)明方法的具體應(yīng)用以及有益效果。搜索服務(wù)器接收到數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求后,需要對(duì)數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求進(jìn)行解析獲得搜索關(guān)鍵字,并對(duì)搜索關(guān)鍵字進(jìn)行邏輯運(yùn)算處理獲得相應(yīng)的索引條件,而后對(duì)搜索服務(wù)器中存儲(chǔ)的大量數(shù)據(jù)索引進(jìn)行讀寫(xiě)匹配操作,從中搜索到滿足索引條件的數(shù)據(jù)返回給請(qǐng)求方,搜索業(yè)務(wù)請(qǐng)求處理才得以完成??梢?jiàn)搜索服務(wù)器執(zhí)行數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理的具體處理任務(wù)流程較為復(fù)雜,比較消耗時(shí)間和系統(tǒng)資源,如何保證業(yè)務(wù)請(qǐng)求處理執(zhí)行效率則顯得尤為重要。
      為此,利用本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法來(lái)執(zhí)行搜索服務(wù)器的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理,即,讓搜索服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;在搜索服務(wù)器運(yùn)行過(guò)程中,將接收到的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列,同時(shí),分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求進(jìn)行處理;被分配調(diào)用的待用線程在數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后,重新釋放為空閑狀態(tài),供搜索服務(wù)器后續(xù)調(diào)用。為了簡(jiǎn)化設(shè)計(jì)和系統(tǒng)運(yùn)行流程,在本實(shí)施例中,對(duì)于待用線程采用了一次性創(chuàng)建、而后調(diào)用的實(shí)施方式;其具體為,在搜索服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程,Nmax為預(yù)設(shè)最大線程數(shù);在搜索服務(wù)器運(yùn)行過(guò)程中,分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求進(jìn)行處理的分配調(diào)用流程則如圖1所示,其具體分配調(diào)用步驟如下S11,判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟S12 ;否則執(zhí)行步驟S14 ;S12,判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟S13 ;否則執(zhí)行步驟S14 ;S13,分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟Sll ; S14,經(jīng)延時(shí)At后,返回步驟S11。
      由上述的分配調(diào)用流程可見(jiàn),在本實(shí)施例的搜索服務(wù)器中,如果請(qǐng)求隊(duì)列中存在尚未處理的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求且存在空閑的待用線程的情況下,服務(wù)器將逐次分配調(diào)用空閑的待用線程按照請(qǐng)求隊(duì)列的排隊(duì)順序?qū)ι形刺幚淼臄?shù)據(jù)搜索業(yè)務(wù)請(qǐng)求進(jìn)行處理,保證數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理的及時(shí)執(zhí)行;而當(dāng)創(chuàng)建的Nmax個(gè)待用線程都已被分配調(diào)用,而又存在尚未處理的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求時(shí),則只能循環(huán)的延時(shí)△ t,等待有被分配調(diào)用的待用線程在數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理執(zhí)行完成而重新釋放為空閑狀態(tài)后,再繼續(xù)分配調(diào)用空閑的待用線程執(zhí)行數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理,由此控制并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的線程數(shù)量,避免了同時(shí)運(yùn)行過(guò)多的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理線程而造成“壟斷”占用服務(wù)器系統(tǒng)資源、數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理執(zhí)行效率驟然降低的情況,保證搜索服務(wù)器在運(yùn)行過(guò)程中始終能夠保持較高的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理執(zhí)行效率;同時(shí),由于搜索服務(wù)器啟動(dòng)運(yùn)行時(shí)已創(chuàng)建待用線程,在搜索服務(wù)器的運(yùn)行過(guò)程中只需要執(zhí)行待用線程的分配調(diào)用,而無(wú)需再創(chuàng)建和銷毀線程,完全避免了創(chuàng)建、銷毀線程對(duì)數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間和系統(tǒng)資源的消耗,業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間得以縮短,并且業(yè)務(wù)請(qǐng)求處理執(zhí)行效率也得以提高,從而進(jìn)一步增強(qiáng)了搜索服務(wù)器的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理性能。在上述分配調(diào)用流程的步驟4)中延遲At,是為了避免服務(wù)器在不存在尚未處理的數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求或者不存在空閑的待用線程時(shí)過(guò)于頻繁的執(zhí)行檢測(cè)判斷操作,當(dāng)然延遲At的值也不應(yīng)當(dāng)過(guò)大,否則會(huì)影響待用線程的分配調(diào)用效率;從這些因素考慮,延時(shí)At的取值范圍在5(T500ms之間較為適宜。
      在本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法中,如果要使得服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能得到更為優(yōu)化和充分的利用,則可以根據(jù)具體服務(wù)器硬件條件以及服務(wù)器提供的業(yè)務(wù)服務(wù)情況來(lái)設(shè)置預(yù)設(shè)最大線程數(shù)Nmax。作為服務(wù)器的硬件條件,服務(wù)器的CPU數(shù)量越多,則表明服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能基礎(chǔ)越優(yōu)秀,服務(wù)器可同時(shí)運(yùn)行的線程數(shù)也越多;服務(wù)器CPU 的運(yùn)算處理能力越強(qiáng),其在業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間就越短,越有助于提高業(yè)務(wù)請(qǐng)求處理速率。而服務(wù)器所提供業(yè)務(wù)服務(wù)的數(shù)據(jù)需求量大小對(duì)業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間也存在較大影響,業(yè)務(wù)服務(wù)的數(shù)據(jù)需求量越大,自然在業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間就越長(zhǎng),因此業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間也越長(zhǎng)。而在不同的實(shí)際應(yīng)用場(chǎng)合中,服務(wù)器硬件條件以及服務(wù)器提供的業(yè)務(wù)服務(wù)情況可能各有不同,因此在應(yīng)用本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法時(shí),技術(shù)人員可以根據(jù)服務(wù)器硬件條件及其所提供業(yè)務(wù)服務(wù)的具體情況,憑借經(jīng)驗(yàn)來(lái)設(shè)置預(yù)設(shè)最大線程數(shù)Nmax的較適宜取值。
      但是,若預(yù)設(shè)最大線程數(shù)Nmax的取值過(guò)大,將可能導(dǎo)致并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的待用線程數(shù)量過(guò)多,影響業(yè)務(wù)請(qǐng)求處理執(zhí)行效率;而若預(yù)設(shè)最大線程數(shù)Nmax的取值過(guò)小, 則服務(wù)器應(yīng)有的業(yè)務(wù)請(qǐng)求處理性能又不能夠得以充分的利用。為此,基于對(duì)服務(wù)器硬件條件及其所提供業(yè)務(wù)服務(wù)情況的綜合考慮,可以按下式計(jì)算獲得服務(wù)器目標(biāo)線程數(shù)Nthr Nthr= (1+Tw/Tc)Ncpu ;
      其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。服務(wù)器的CPU數(shù)量Ncpu體現(xiàn)了服務(wù)器的硬件基礎(chǔ)性能;業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間Tc體現(xiàn)了服務(wù)器CPU的運(yùn)算處理能力;業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間Tw體現(xiàn)了業(yè)務(wù)服務(wù)自身的數(shù)據(jù)需求量;這些數(shù)據(jù)可以通過(guò)對(duì)服務(wù)器過(guò)往業(yè)務(wù)請(qǐng)求處理過(guò)程加以統(tǒng)計(jì)而獲得。綜合考量服務(wù)器硬件因素以及服務(wù)業(yè)務(wù)自身因素獲得服務(wù)器目標(biāo)線程數(shù)Nthr后,服務(wù)器的預(yù)設(shè)最大線程數(shù)Nmax則可以根據(jù)實(shí)際情況在(1 士 10%)Nthr的范圍內(nèi)取值,保證預(yù)設(shè)最大線程數(shù)Nmax 的取值趨于合理化,使得服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能得到更為優(yōu)化和充分的利用。例如,對(duì)于本實(shí)施例的搜索服務(wù)器而言,服務(wù)器的CPU數(shù)量Ncpu=4,而由于數(shù)據(jù)搜索過(guò)程中需要進(jìn)行讀寫(xiě)匹配操作的數(shù)據(jù)量較大,在數(shù)據(jù)搜索業(yè)務(wù)請(qǐng)求處理過(guò)程中,通常執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間與執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間之比為9 1左右,因此,針對(duì)本實(shí)施例搜索服務(wù)器的情況,預(yù)設(shè)最大線程數(shù)Nmax在4(Γ48之間取值較為適宜。實(shí)施例二
      由于服務(wù)器在啟動(dòng)運(yùn)行時(shí),通常需要對(duì)較多的系統(tǒng)數(shù)據(jù)執(zhí)行初始化處理,其初始化自身就需要消耗較多的系統(tǒng)資源;如果采用實(shí)施例一所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理實(shí)施方式, 在服務(wù)器啟動(dòng)運(yùn)行時(shí)就創(chuàng)建非常多的待用線程,則會(huì)進(jìn)一步消耗系統(tǒng)資源,導(dǎo)致服務(wù)器初始化處理執(zhí)行緩慢而長(zhǎng)時(shí)間不能啟動(dòng)至正常運(yùn)行狀態(tài),影響服務(wù)器的啟動(dòng)操作。為了降低這種不利影響,本實(shí)施例提供了一種更為優(yōu)化的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,在服務(wù)器啟動(dòng)運(yùn)行時(shí),先創(chuàng)建一部分的待用線程,例如創(chuàng)建N個(gè)空閑的待用線程,N<Nmax, Nmax為預(yù)設(shè)最大線程數(shù);在服務(wù)器運(yùn)行過(guò)程中,分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理時(shí),則按下述的分配調(diào)用步驟執(zhí)行,其流程如圖2所示
      S21,判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟S22 ;否則執(zhí)行步驟S25 ;
      S22,判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟S23 ;否則執(zhí)行步驟
      S24 ;
      S23,分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟S21 ;
      S24,判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax ;若是,則執(zhí)行步驟S25 ;否則,S26 再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟S21 ; S25,經(jīng)延時(shí)At后,返回步驟S21。參見(jiàn)上述的待用線程分配調(diào)用流程,在請(qǐng)求隊(duì)列中存在尚未處理的業(yè)務(wù)請(qǐng)求且存在空閑的待用線程的情況下,待用線程的分配調(diào)用方式與實(shí)施例一是相一致的,能夠逐次分配調(diào)用空閑的待用線程按照請(qǐng)求隊(duì)列的排隊(duì)順序?qū)ι形刺幚淼臉I(yè)務(wù)請(qǐng)求進(jìn)行處理;不同之處在于,在請(qǐng)求隊(duì)列中存在尚未處理的業(yè)務(wù)請(qǐng)求而不存在空閑的待用線程的情況下,月艮務(wù)器則會(huì)在待用線程分配調(diào)用的過(guò)程中陸續(xù)創(chuàng)建新的待用線程對(duì)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,直至待用線程的總數(shù)已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax為止。這樣一來(lái),可以通過(guò)在服務(wù)器啟動(dòng)運(yùn)行時(shí)創(chuàng)建較少的待用線程,減弱線程創(chuàng)建處理對(duì)服務(wù)器啟動(dòng)初始化操作的不利影響,保證服務(wù)器迅速正常運(yùn)行后,在服務(wù)器運(yùn)行過(guò)程中有需要的時(shí)候再陸續(xù)建立待用線程,從而讓服務(wù)器始終保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率;在服務(wù)器運(yùn)行過(guò)程中后續(xù)建立的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后也不需要?dú)绲?,而是重新釋放為空閑狀態(tài),繼續(xù)作為服務(wù)器的線程資源等待后續(xù)調(diào)用,從而使得服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能能夠根據(jù)需要自行逐步提升至最佳,并最終保持在性能最佳狀態(tài)。當(dāng)然,為了保證服務(wù)器在啟動(dòng)運(yùn)行過(guò)后正常運(yùn)行的初期也能夠具備比較優(yōu)良的業(yè)務(wù)請(qǐng)求處理性能,在服務(wù)器啟動(dòng)運(yùn)行時(shí)創(chuàng)建的待用線程數(shù)N不宜過(guò)少,通常情況下取N為1/2 2/3倍預(yù)設(shè)最大線程數(shù)Nmax較為適宜。同時(shí),本實(shí)施例也可以采用實(shí)施例一中所述的方式確定預(yù)設(shè)最大線程數(shù)Nmax的取值,以保證服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能可以得到更為優(yōu)化和充分的利用。實(shí)施例三
      對(duì)應(yīng)的,本發(fā)明還提供了一種服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,該裝置可以集成于服務(wù)器中, 也可以作為服務(wù)器外的獨(dú)立裝置。該裝置的結(jié)構(gòu)如圖3所示,包括 創(chuàng)建模塊10,用于預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程; 排隊(duì)模塊20,用于在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列; 調(diào)度模塊30,用于分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處
      理;
      狀態(tài)管理模塊40,用于將被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。具體的,所述創(chuàng)建模塊10可以包括第一創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程,Nmax為預(yù)設(shè)最大線程數(shù);
      則調(diào)度模塊30具體可以包括第一調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若否,則經(jīng)延時(shí)Δ t后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。所述創(chuàng)建模塊10還可以是具體包括第二創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建N個(gè)空閑的待用線程,且N<NmaX,Nmax為預(yù)設(shè)最大線程數(shù);
      則調(diào)度模塊30具體可以包括第二調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理, 然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax ;若是,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。上述預(yù)設(shè)最大線程數(shù)Nmax的取值范圍為(1 士 10%)Nthr,Nthr為服務(wù)器目標(biāo)線程數(shù),且可以有
      Nthr= (1+Tw/Tc)Ncpu ;
      其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。綜合上述三個(gè)實(shí)施例的舉例說(shuō)明,可以看到,本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法及裝置通過(guò)分配調(diào)用有限數(shù)量的待用線程對(duì)業(yè)務(wù)請(qǐng)求進(jìn)行處理,不僅有效控制了并發(fā)執(zhí)行業(yè)務(wù)請(qǐng)求處理的線程數(shù)量,保證了服務(wù)器在運(yùn)行過(guò)程中始終能夠保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,還避免了創(chuàng)建、銷毀線程對(duì)業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間和系統(tǒng)資源的消耗,在縮短業(yè)務(wù)請(qǐng)求處理執(zhí)行時(shí)間的同時(shí)也能后利用更多的系統(tǒng)資源提高業(yè)務(wù)請(qǐng)求處理的執(zhí)行效率,從而進(jìn)一步增強(qiáng)了服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能;同時(shí),在本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置的應(yīng)用過(guò)程中,還可以根據(jù)具體應(yīng)用場(chǎng)合的服務(wù)器硬件條件以及服務(wù)器提供的業(yè)務(wù)服務(wù)情況,合理設(shè)置預(yù)設(shè)最大線程數(shù)Nmax的值,讓服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能得到更為優(yōu)化和充分的利用;此外,通過(guò)調(diào)整本發(fā)明方法和裝置中待用線程的創(chuàng)建時(shí)機(jī)以及待用線程的分配調(diào)用處理過(guò)程,可以優(yōu)化服務(wù)器啟動(dòng)運(yùn)行和運(yùn)行過(guò)程中的系統(tǒng)資源分配,并使得服務(wù)器能夠根據(jù)需要自行逐步提升業(yè)務(wù)請(qǐng)求處理性能。本發(fā)明的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法及裝置不僅僅可以應(yīng)用于實(shí)施例中涉及的搜索服務(wù)器,其可以廣泛應(yīng)用于任何業(yè)務(wù)的服務(wù)器當(dāng)中,讓服務(wù)器提供更加快速、高效的業(yè)務(wù)服務(wù),提升用戶的業(yè)務(wù)體驗(yàn)以及對(duì)業(yè)務(wù)服務(wù)產(chǎn)品的忠誠(chéng)度。最后說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
      1權(quán)利要求
      1.一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列,并分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后,重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。
      2.根據(jù)權(quán)利要求1所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,所述服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程具體為,在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程,Nmax為預(yù)設(shè)最大線程數(shù);在服務(wù)器運(yùn)行過(guò)程中,所述分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理的具體分配調(diào)用步驟如下1)判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟2);否則執(zhí)行步驟4);2)判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟3);否則執(zhí)行步驟4);3)分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟1);4)經(jīng)延時(shí)At后,返回步驟1)。
      3.根據(jù)權(quán)利要求1所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,所述服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程具體為,在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建N個(gè)空閑的待用線程,且 N<Nmax, Nmax為預(yù)設(shè)最大線程數(shù);在服務(wù)器運(yùn)行過(guò)程中,所述分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理的具體分配調(diào)用步驟如下a)判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若是,執(zhí)行步驟b);否則執(zhí)行步驟e);b)判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,執(zhí)行步驟c);否則執(zhí)行步驟d);c)分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟a);d)判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax;若是,則執(zhí)行步驟 e);否則,再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回步驟a);e)經(jīng)延時(shí)At后,返回步驟a)。
      4.根據(jù)權(quán)利要求3所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,所述N的取值范圍為 1/2^2/3倍預(yù)設(shè)最大線程數(shù)Nmax。
      5.根據(jù)權(quán)利要求2、中任一項(xiàng)所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,所述預(yù)設(shè)最大線程數(shù)Nmax的取值范圍為(1 士 10%)Nthr,Nthr為服務(wù)器目標(biāo)線程數(shù),且有Nthr=(1+Tw/Tc)Ncpu ;其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。
      6.根據(jù)權(quán)利要求2、中任一項(xiàng)所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理方法,其特征在于,所述延時(shí)At的取值范圍為5(T500ms。
      7.一種服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,其特征在于,包括創(chuàng)建模塊,用于預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;排隊(duì)模塊,用于在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列;調(diào)度模塊,用于分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;狀態(tài)管理模塊,用于將被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。
      8.如權(quán)利要求7所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,其特征在于,所述創(chuàng)建模塊包括第一創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建Nmax個(gè)空閑的待用線程,Nmax為預(yù)設(shè)最大線程數(shù);則所述調(diào)度模塊包括第一調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若否,則經(jīng)延時(shí)Δ t后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。
      9.如權(quán)利要求7所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,其特征在于,所述創(chuàng)建模塊包括第二創(chuàng)建單元,用于在服務(wù)器啟動(dòng)運(yùn)行時(shí),創(chuàng)建N個(gè)空閑的待用線程,且N<NmaX,Nmax為預(yù)設(shè)最大線程數(shù);則所述調(diào)度模塊包括第二調(diào)度單元,用于判斷當(dāng)前時(shí)刻請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求;若否,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若是,則判斷當(dāng)前時(shí)刻是否存在空閑的待用線程;若是,則分配調(diào)用一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則判斷當(dāng)前時(shí)刻待用線程的總數(shù)是否已達(dá)到預(yù)設(shè)最大線程數(shù)Nmax ;若是,則經(jīng)延時(shí)At后重新進(jìn)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求,若否,則再創(chuàng)建一個(gè)空閑的待用線程對(duì)請(qǐng)求隊(duì)列中當(dāng)前時(shí)刻排隊(duì)最靠前的一個(gè)尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理,然后立即返回執(zhí)行所述判斷請(qǐng)求隊(duì)列中是否存在尚未處理的業(yè)務(wù)請(qǐng)求。
      10.如權(quán)利要求8或9所述的服務(wù)器業(yè)務(wù)請(qǐng)求處理裝置,其特征在于,所述預(yù)設(shè)最大線程數(shù)Nmax的取值范圍為(1 士 10%)Nthr,Nthr為服務(wù)器目標(biāo)線程數(shù),且有Nthr= (1+Tw/Tc)Ncpu ;其中,Ncpu表示服務(wù)器的CPU數(shù)量;Tc表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行業(yè)務(wù)請(qǐng)求解析運(yùn)算處理的平均持續(xù)時(shí)間;Tw表示業(yè)務(wù)請(qǐng)求處理過(guò)程中執(zhí)行服務(wù)器數(shù)據(jù)讀寫(xiě)操作的平均持續(xù)時(shí)間。
      全文摘要
      本發(fā)明提供了一種服務(wù)器業(yè)務(wù)請(qǐng)求處理方法和裝置,其中,該方法通過(guò)服務(wù)器預(yù)先創(chuàng)建有限數(shù)量的空閑的待用線程;在服務(wù)器運(yùn)行過(guò)程中,將接收到的業(yè)務(wù)請(qǐng)求排隊(duì)形成請(qǐng)求隊(duì)列,并分配調(diào)用空閑的待用線程對(duì)請(qǐng)求隊(duì)列中尚未處理的業(yè)務(wù)請(qǐng)求進(jìn)行處理;被分配調(diào)用的待用線程在業(yè)務(wù)請(qǐng)求處理執(zhí)行完成后,重新釋放為空閑狀態(tài),供服務(wù)器后續(xù)調(diào)用。本發(fā)明方法和裝置保證了服務(wù)器在運(yùn)行過(guò)程中能夠保持較高的業(yè)務(wù)請(qǐng)求處理執(zhí)行效率,增強(qiáng)了服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能,讓服務(wù)器的業(yè)務(wù)請(qǐng)求處理性能得到更為優(yōu)化和充分的利用,并且本發(fā)明方法可以廣泛應(yīng)用于任何業(yè)務(wù)的服務(wù)器當(dāng)中,讓服務(wù)器提供更加快速、高效的業(yè)務(wù)服務(wù),提升用戶的業(yè)務(wù)體驗(yàn)以及對(duì)業(yè)務(wù)服務(wù)產(chǎn)品的忠誠(chéng)度。
      文檔編號(hào)G06F9/50GK102541659SQ20111045461
      公開(kāi)日2012年7月4日 申請(qǐng)日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
      發(fā)明者王忻 申請(qǐng)人:重慶新媒農(nóng)信科技有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1