專利名稱:一種基于http的業(yè)務(wù)請求處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種基于超文本傳輸協(xié)議(Hyper Text Transfer Protocol, HTTP)業(yè)務(wù)請求處理方法及裝置。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,短信業(yè)務(wù)、彩信業(yè)務(wù)以及交互式網(wǎng)絡(luò)電視 (IPTV)業(yè)務(wù)導(dǎo)致用戶數(shù)量急劇增加,從而也促使大數(shù)據(jù)量的媒體業(yè)務(wù)在移動互聯(lián)網(wǎng)中普及。因此幾百甚至上千兆的文件可能會在鏈路中傳輸,從而占用該鏈路較長時間,造成服務(wù)提供商(SP)因為訪問量太大,而產(chǎn)生響應(yīng)延遲,進而增加了每個業(yè)務(wù)的生命周期。在現(xiàn)有技術(shù)中對業(yè)務(wù)請求進行處理的通信模塊一般采用select/poll模式。在鏈路較少的情況下,其通訊的效率較高,但是當(dāng)單線程鏈路數(shù)量增加一定程度時,該select/ poll模式會占用大量的CPU資源,導(dǎo)致數(shù)據(jù)發(fā)送和接收延遲。并且當(dāng)鏈路數(shù)量達(dá)到閾值時導(dǎo)致消息隊列大量積累,CPU和內(nèi)存耗盡無法工作?,F(xiàn)有技術(shù)中存在上述問題的原因主要是因為select/poll模式需要進行套接字的收集(FD_SET),在鏈路中存在大量可寫可讀的套接字,采用select/poll模式需要遍歷線程內(nèi)所有的鏈路,收集所有的套接字;select/poll模式需要進行套接字的清理(FD_ZER0),即在每次進行套接字收集之前需要將上一時刻收集的套接字清零;select/poll模式需要進行判斷(FD_ISSET),即輪詢所有鏈路,判斷每條鏈路的
套接字是否在套接字集中。由于上述現(xiàn)有的對業(yè)務(wù)處理的過程中,采用select/poll模式,而select/poll模式由于其需要反復(fù)輪詢套接字集,而其中可能大部分套接字的狀態(tài)都沒有發(fā)生變化,從而造成了系統(tǒng)資源的浪費。而通過增加線程的方式可以從一定程度上可以節(jié)省開銷,但是無法從根本上解決問題,當(dāng)業(yè)務(wù)量增加時,上述問題尤其嚴(yán)重。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種基于HTTP的業(yè)務(wù)請求處理方法及裝置,用以解決現(xiàn)有技術(shù)中維護大量鏈路時對業(yè)務(wù)請求進行處理的過程中,采用select/poll模式造成的系統(tǒng)資源浪費的問題。本發(fā)明實施例提供了一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理方法,該方法包括如下步驟根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理;當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀或可寫觸發(fā)事件集合中;根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。本發(fā)明實施例提供了一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理的裝置,所述裝置包括判斷模塊,用于根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理;添加模塊,用于當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中;處理模塊,用于根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。本發(fā)明實施例提供了一種基于HTTP的業(yè)務(wù)請求處理方法及裝置,該方法中,當(dāng)接收到業(yè)務(wù)請求后,確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入觸發(fā)事件集合中, 根據(jù)當(dāng)前的鏈路狀態(tài)選擇性的加入到可讀或可寫觸發(fā)事件集合中,每次觸發(fā)這些事件后, 根據(jù)當(dāng)前的鏈路狀態(tài)選擇性的可讀或可寫觸發(fā),對可讀或可寫觸發(fā)事件集合中的套接字做對應(yīng)的處理。由于在本發(fā)明實施例中,根據(jù)業(yè)務(wù)請求是否進行了處理,將套接字加入到對應(yīng)的可讀或可寫觸發(fā)事件集合中,只對可讀或可寫觸發(fā)事件集合中的套接字根據(jù)不同的鏈路狀態(tài)做處理,不需要反復(fù)清空套接字集合,統(tǒng)計套接字,輪詢套接字以查找鏈路,因此避免了每次對可讀或可寫套接字輪詢所消耗的時間,提高了業(yè)務(wù)請求處理的效率,可維護大量鏈路,節(jié)省了系統(tǒng)的資源。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1為本發(fā)明實施例提供的一種基于HTTP的業(yè)務(wù)請求處理過程;圖2為本發(fā)明實施例提供的一種基于HTTP的業(yè)務(wù)請求處理的詳細(xì)過程;圖3為本發(fā)明實施例提供的當(dāng)該業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求時,基于HTTP的業(yè)務(wù)請求處理過程;圖4為本發(fā)明實施例提供的一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理的裝置的結(jié)構(gòu)示意圖。
具體實施例方式為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實施例為了有效的提高業(yè)務(wù)請求的處理效率,節(jié)省系統(tǒng)的資源,提供了一種基于HTTP維護大量鏈路時的業(yè)務(wù)請求處理方法及裝置,該方法根據(jù)業(yè)務(wù)請求是否進行了處理,將套接字加入到對應(yīng)的可讀或可寫觸發(fā)事件集合中,只對可讀或可寫觸發(fā)事件集合中的套接字進行處理,因此避免了每次對可讀或可寫套接字輪詢所消耗的時間,提高了業(yè)務(wù)請求處理的效率,節(jié)省了系統(tǒng)的資源。下面結(jié)合說明書附圖,對本發(fā)明實施例進行詳細(xì)說明。圖1為本發(fā)明實施例提供的一種基于HTTP的業(yè)務(wù)請求處理過程,該過程包括以下步驟SlOl 根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理。其中,在本發(fā)明實施例中在判斷是否對該業(yè)務(wù)請求進行了處理之前,該方法還包括接收該業(yè)務(wù)請求,并對該業(yè)務(wù)請求進行處理。S102:當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中。具體的在本發(fā)明實施例中該業(yè)務(wù)請求包括建立鏈接的業(yè)務(wù)請求、監(jiān)聽業(yè)務(wù)請求和數(shù)據(jù)發(fā)送業(yè)務(wù)請求。S103 根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。由于本發(fā)明實施例中,根據(jù)業(yè)務(wù)請求是否進行了處理,將套接字加入到對應(yīng)的可讀或可寫觸發(fā)事件集合中,只對可讀或可寫觸發(fā)事件集合中的套接字進行處理,不需要反復(fù)清空套接字集合,統(tǒng)計套接字,輪詢套接字以查找鏈路,因此避免了每次網(wǎng)絡(luò)輸入輸出中對可讀或可寫套接字輪詢所消耗的時間,提高了業(yè)務(wù)請求處理的效率,適用于維護大量鏈路,節(jié)省了系統(tǒng)的資源。具體的在本發(fā)明實施例中采用印oil模式進行通信,實現(xiàn)對業(yè)務(wù)請求的處理, epoll模式無需進行大量套接字的收集,只要在建立鏈接、監(jiān)聽或者建立后,一次性的將和鏈路相關(guān)的套接字寫入到一段內(nèi)存中,之后就不再需要進行套接字的收集了,只需要通過接口改變套接字的觸發(fā)方式即可。在對相應(yīng)觸發(fā)方式的套接字進行處理時,系統(tǒng)會返回鏈路索引而獲取到鏈路信息,從而規(guī)避了 select/poll模式下,為了獲知鏈路信息,每次都需要輪詢線程下所有鏈路,是否套接字集中各個套接字與本鏈路套接字一致,以便于查找對應(yīng)的鏈路信息。在多數(shù)鏈路活躍的情況下,為了提高讀寫的效率,減小業(yè)務(wù)請求處理的時延,在本發(fā)明實施例中將所有鏈路均分到多線程中進行維護,從而可以提高業(yè)務(wù)請求接收和發(fā)送的效率,并且由于每個線程固定處理一定數(shù)量的業(yè)務(wù)請求,從而不會因為頻繁的讀寫操作造成消息隊列的排隊或時延,可以有效的提高讀寫的效率。另外,在本發(fā)明實施例中為了進一步提高讀寫的效率,在每個線程對業(yè)務(wù)請求進行處理時,可以統(tǒng)一的接收每個業(yè)務(wù)請求,并對每個業(yè)務(wù)請求進行處理,之后在進行統(tǒng)一的異步讀寫操作,例如處理完建立鏈接的業(yè)務(wù)請求、監(jiān)聽業(yè)務(wù)請求或?qū)⒁l(fā)送的數(shù)據(jù)的加入消息隊列后,再統(tǒng)一的進行異步操作,這樣可以進一步避免因為頻繁的讀寫操作造成消息隊列的排隊或時延,進一步提高讀寫的效率。在本發(fā)明實施例中所述接收業(yè)務(wù)請求,對該業(yè)務(wù)請求進行處理包括主控線程接收業(yè)務(wù)請求,將接收到的業(yè)務(wù)請求分發(fā)給每個工作線程的消息隊列;工作線程從消息隊列獲取每個業(yè)務(wù)請求,并對獲取到的業(yè)務(wù)請求進行處理。具體的所述對獲取到的業(yè)務(wù)請求進行處理,包括判斷獲取到的業(yè)務(wù)請求的數(shù)量是否達(dá)到了設(shè)定閾值,或是否消息隊列中不存在待獲取的業(yè)務(wù)請求;當(dāng)獲取到的業(yè)務(wù)請求的數(shù)量達(dá)到了設(shè)定閾值,或消息隊列中不存在待獲取的業(yè)務(wù)請求時,對獲取到的業(yè)務(wù)請求進行處理。圖2為本發(fā)明實施例提供的一種基于HTTP的業(yè)務(wù)請求處理的詳細(xì)過程,該過程包括以下步驟S201 主控線程接收業(yè)務(wù)請求,將接收到的業(yè)務(wù)請求分發(fā)給每個工作線程的消息隊列。S202:工作線程從消息隊列獲取每個業(yè)務(wù)請求,判斷獲取到的業(yè)務(wù)請求的數(shù)量是否達(dá)到了設(shè)定閾值,或是否消息隊列中不存在待獲取的業(yè)務(wù)請求,當(dāng)其中至少一個判斷結(jié)果為是時,進行步驟S203,否則,進行步驟S202。S203 對獲取到的每個業(yè)務(wù)請求進行處理。S204 判斷是否對該業(yè)務(wù)請求進行了處理,當(dāng)判斷結(jié)果為是時,進行步驟S205,否則,進行步驟S204。S205 將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中。S206 根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。具體的在本發(fā)明實施例中主孔線程負(fù)責(zé)將接收到的業(yè)務(wù)請求分發(fā)給各個工作線程,其中在該上述過程中步驟S201為主控線程的分發(fā)動作過程,步驟S202 S206為工作線程的處理過程。當(dāng)主控線程進行業(yè)務(wù)請求的發(fā)送時,當(dāng)且接收到業(yè)務(wù)請求時,該業(yè)務(wù)請求包括向外建立鏈接的請求,監(jiān)聽某一端口的業(yè)務(wù)請求或在某一鏈路上發(fā)送數(shù)據(jù)的業(yè)務(wù)請求,當(dāng)主控線程接收到該每個業(yè)務(wù)請求后,將業(yè)務(wù)請求均發(fā)到各個工作線程中去。具體的主控線程將接收到的每個業(yè)務(wù)請求均發(fā)到每個工作線程的消息隊列中。而工作線程在初始化完成后,從消息隊列中獲取每個業(yè)務(wù)請求,工作線程從消息隊列獲取到業(yè)務(wù)請求后,并不直接進行異步讀寫操作,而是當(dāng)滿足一定的條件時,才進行異步操作。該滿足的條件是,消息隊列中不存在待獲取的業(yè)務(wù)請求,或者工作線程獲取到的業(yè)務(wù)請求的數(shù)量達(dá)到了設(shè)定的閾值,該設(shè)定的閾值可以根據(jù)工作線程的處理能力確定,例如可以為200個。當(dāng)工作線程獲取到每個業(yè)務(wù)請求后,對獲取到的業(yè)務(wù)請求進行處理,當(dāng)對某一業(yè)務(wù)請求進行處理后,將構(gòu)建的該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀或可寫觸發(fā)事件集合中。當(dāng)將構(gòu)建的每個業(yè)務(wù)請求對應(yīng)的套接字加入到可讀或可寫觸發(fā)事件集合中后,該工作線程也并不進行異步讀寫操作,而是在滿足了上述條件后,才統(tǒng)一進行異步讀寫操作。當(dāng)工作線程進行了異步讀寫操作后,將業(yè)務(wù)請求的數(shù)量清零,以便循環(huán)進行下一次業(yè)務(wù)請求處理的過程。具體的在本發(fā)明實施例中該業(yè)務(wù)請求可以為建立鏈接的業(yè)務(wù)請求、監(jiān)聽業(yè)務(wù)請求和數(shù)據(jù)發(fā)送業(yè)務(wù)請求。當(dāng)所述業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求,當(dāng)確定完成了建立鏈接的操作時,將套接字加入到可讀觸發(fā)事件集合中。當(dāng)所述業(yè)務(wù)請求為監(jiān)聽業(yè)務(wù)請求,當(dāng)確定開始進行監(jiān)聽時,將套接字加入到可讀觸發(fā)事件集合中。當(dāng)所述業(yè)務(wù)請求為數(shù)據(jù)發(fā)送業(yè)務(wù)請求,當(dāng)確定存在待發(fā)送數(shù)據(jù)時,將套接字加入到可寫觸發(fā)事件集合中。下面通過具體的實施例進行說明。圖3為本發(fā)明實施例提供的當(dāng)該業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求時,基于HTTP的業(yè)務(wù)請求處理過程,該過程包括以下步驟S301 終端(CP)發(fā)送建立鏈接的業(yè)務(wù)請求,該業(yè)務(wù)請求處理裝置接收該建立鏈接的業(yè)務(wù)請求。S302:業(yè)務(wù)請求處理裝置接收到該建立鏈接的業(yè)務(wù)請求后,建立套接字 (socket)),綁定本地IP,設(shè)置非阻塞模式(ioctl),并向服務(wù)提供商(SP)發(fā)起連接 (connect)0S303:業(yè)務(wù)請求處理裝置當(dāng)確定完成建立鏈接操作后,將該建立鏈接的業(yè)務(wù)請求對應(yīng)的套接字加入到可讀觸發(fā)事件集合中,當(dāng)該建立鏈接的操作為異步完成時,則在下次 ep0ll_Wait之后則返回的該套接字觸發(fā)可寫事件后,將該套接字加入到可讀觸發(fā)事件集合中。S304 根據(jù)可讀觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。當(dāng)業(yè)務(wù)請求處理裝置接收到的業(yè)務(wù)請求為監(jiān)聽業(yè)務(wù)請求時,當(dāng)業(yè)務(wù)請求處理裝置接收到該監(jiān)聽業(yè)務(wù)請求后,針對該業(yè)務(wù)請求建立套接字,綁定本地IP和端口,設(shè)置非阻塞模式并監(jiān)聽,并將該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀觸發(fā)事件集合中。當(dāng)某一時刻監(jiān)聽到建立鏈接的業(yè)務(wù)請求時,則接收該套接字,并將該套接字分發(fā)到某一線程,偵聽其可讀觸發(fā)。當(dāng)業(yè)務(wù)請求處理裝置接收到的業(yè)務(wù)請求為數(shù)據(jù)發(fā)送業(yè)務(wù)請求時,則根據(jù)發(fā)送該業(yè)務(wù)請求的鏈路,將該業(yè)務(wù)請求對應(yīng)的套接字加入到可寫觸發(fā)事件集合中,印oll_wait之后, 當(dāng)該鏈路可寫時,直接發(fā)送該數(shù)據(jù),只有在數(shù)據(jù)發(fā)送時,才將該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀觸發(fā),避免每次ep0ll_Wait之后返回大量的可讀事件,因此該業(yè)務(wù)請求的處理方式提高了讀寫的效率。當(dāng)鏈路建立鏈接之后該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀觸發(fā)事件集合中,如果存在待讀取的數(shù)據(jù),印oll_wait將觸發(fā)可讀事件,進而接收(recv)該數(shù)據(jù)。圖4為本發(fā)明實施例提供的一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理的裝置的結(jié)構(gòu)示意圖,所述裝置包括判斷模塊41,用于根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理;添加模塊42,用于當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中;處理模塊43,用于根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。所述添加模塊42,具體用于當(dāng)所述業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求,當(dāng)確定完成了建立鏈接的操作時,將套接字加入到可讀觸發(fā)事件集合中。所述添加模塊42,具體用于當(dāng)所述業(yè)務(wù)請求為監(jiān)聽業(yè)務(wù)請求,當(dāng)確定開始進行監(jiān)聽時,將套接字加入到可讀觸發(fā)事件集合中。所述添加模塊42,具體用于當(dāng)所述業(yè)務(wù)請求為數(shù)據(jù)發(fā)送業(yè)務(wù)請求,當(dāng)確定存在待發(fā)送數(shù)據(jù)時,將套接字加入到可寫觸發(fā)事件集合中。所述裝置還包括接收模塊44,用于接收該業(yè)務(wù)請求,并對該業(yè)務(wù)請求進行處理。所述接收模塊44,具體用于通過主控線程接收業(yè)務(wù)請求,將接收到的業(yè)務(wù)請求分發(fā)給每個工作線程的消息隊列;工作線程從消息隊列獲取每個業(yè)務(wù)請求,并對獲取到得業(yè)務(wù)請求進行處理。所述接收模塊44,具體用于判斷獲取到的業(yè)務(wù)請求的數(shù)量是否達(dá)到了設(shè)定閾值,或是否消息隊列中不存在待獲取的業(yè)務(wù)請求;當(dāng)獲取到的業(yè)務(wù)請求的數(shù)量達(dá)到了設(shè)定閾值,或消息隊列中不存在待獲取的業(yè)務(wù)請求時,對獲取到的業(yè)務(wù)請求進行處理。本發(fā)明實施例提供了一種基于HTTP的業(yè)務(wù)請求處理方法及裝置,該方法中,當(dāng)接收到業(yè)務(wù)請求后,當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中,根據(jù)當(dāng)前的鏈路狀態(tài)選擇性的加入到可讀或可寫觸發(fā)事件集合中,每次觸發(fā)這些事件后,根據(jù)當(dāng)前的鏈路狀態(tài)選擇性的可讀或可寫觸發(fā),對可讀或可寫觸發(fā)事件集合中的套接字做對應(yīng)的處理。由于在本發(fā)明實施例中,根據(jù)業(yè)務(wù)請求是否進行了處理,將套接字加入到對應(yīng)的可讀或可寫觸發(fā)事件集合中,只對可讀或可寫觸發(fā)事件集合中的套接字根據(jù)不同的鏈路狀態(tài)做處理,不需要反復(fù)清空套接字集合,統(tǒng)計套接字,輪詢套接字以查找鏈路,因此避免了每次對可讀或可寫套接字輪詢所消耗的時間,提高了業(yè)務(wù)請求處理的效率,可維護大量鏈路,節(jié)省了系統(tǒng)的資源。上述說明示出并描述了本發(fā)明的優(yōu)選實施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。
權(quán)利要求
1.一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理方法,其特征在于,該方法包括如下步驟根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理;當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀或可寫觸發(fā)事件集合中;根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。
2.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求,當(dāng)確定完成了建立鏈接的操作時,將套接字加入到可讀觸發(fā)事件集合中。
3.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述業(yè)務(wù)請求為監(jiān)聽業(yè)務(wù)請求,當(dāng)確定開始進行監(jiān)聽時,將該業(yè)務(wù)請求對應(yīng)的套接字加入到可讀觸發(fā)事件集合中。
4.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述業(yè)務(wù)請求為數(shù)據(jù)發(fā)送業(yè)務(wù)請求,當(dāng)確定存在待發(fā)送數(shù)據(jù)時,將將該業(yè)務(wù)請求對應(yīng)的套接字加入到可寫觸發(fā)事件集合中。
5.如權(quán)利要求1所述的方法,其特征在于,判斷是否對該業(yè)務(wù)請求進行了處理之前,所述方法還包括接收該業(yè)務(wù)請求,并對該業(yè)務(wù)請求進行處理。
6.如權(quán)利要求5所述的方法,其特征在于,所述接收業(yè)請求,對該業(yè)務(wù)請求進行處理包括主控線程接收業(yè)務(wù)請求,將接收到的業(yè)務(wù)請求分發(fā)給每個工作線程的消息隊列; 工作線程從消息隊列獲取每個業(yè)務(wù)請求,并對獲取到的業(yè)務(wù)請求進行處理。
7.如權(quán)利要求6所述的方法,其特征在于,所述對獲取到的業(yè)務(wù)請求進行處理,包括 判斷獲取到的業(yè)務(wù)請求的數(shù)量是否達(dá)到了設(shè)定閾值,或是否消息隊列中不存在待獲取的業(yè)務(wù)請求;當(dāng)獲取到的業(yè)務(wù)請求的數(shù)量達(dá)到了設(shè)定閾值,或消息隊列中不存在待獲取的業(yè)務(wù)請求時,對獲取到的業(yè)務(wù)請求進行處理。
8.一種基于超文本傳輸協(xié)議HTTP的業(yè)務(wù)請求處理的裝置,其特征在于,所述裝置包括判斷模塊,用于根據(jù)接收的業(yè)務(wù)請求,判斷是否對該業(yè)務(wù)請求進行了處理; 添加模塊,用于當(dāng)確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字加入到可讀或可寫觸發(fā)事件集合中;處理模塊,用于根據(jù)可讀或可寫觸發(fā)事件集合中包含的套接字進行相應(yīng)的操作。
9.如權(quán)利要求8所述的裝置,其特征在于,所述添加模塊,具體用于當(dāng)所述業(yè)務(wù)請求為建立鏈接的業(yè)務(wù)請求,當(dāng)確定完成了建立鏈接的操作時,將套接字加入到可讀觸發(fā)事件集α
10.如權(quán)利要求8所述的裝置,其特征在于,所述添加模塊,具體用于當(dāng)所述業(yè)務(wù)請求為監(jiān)聽業(yè)務(wù)請求,當(dāng)確定開始進行監(jiān)聽時,將套接字加入到可讀觸發(fā)事件集合中。
11.如權(quán)利要求8所述的裝置,其特征在于,所述添加模塊,具體用于當(dāng)所述業(yè)務(wù)請求為數(shù)據(jù)發(fā)送業(yè)務(wù)請求,當(dāng)確定存在待發(fā)送數(shù)據(jù)時,將套接字加入到可寫觸發(fā)事件集合中。
12.如權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 接收模塊,用于接收該業(yè)務(wù)請求,并對該業(yè)務(wù)請求進行處理。
13.如權(quán)利要求12所述的裝置,其特征在于,所述接收模塊,具體用于通過主控線程接收業(yè)務(wù)請求,將接收到的業(yè)務(wù)請求分發(fā)給每個工作線程的消息隊列;工作線程從消息隊列獲取每個業(yè)務(wù)請求,并對獲取到的業(yè)務(wù)請求進行處理。
14.如權(quán)利要求13所述的裝置,其特征在于,所述接收模塊,具體用于判斷獲取到的業(yè)務(wù)請求的數(shù)量是否達(dá)到了設(shè)定閾值,或是否消息隊列中不存在待獲取的業(yè)務(wù)請求;當(dāng)獲取到的業(yè)務(wù)請求的數(shù)量達(dá)到了設(shè)定閾值,或消息隊列中不存在待獲取的業(yè)務(wù)請求時,對獲取到的業(yè)務(wù)請求進行處理。
全文摘要
本發(fā)明公開了一種基于HTTP的業(yè)務(wù)請求處理方法及裝置,該方法中,當(dāng)接收到業(yè)務(wù)請求后,確定對該業(yè)務(wù)請求進行了處理時,將構(gòu)建的套接字在其建立時加入到可讀或可寫觸發(fā)事件集合中,根據(jù)當(dāng)前的鏈路狀態(tài)選擇性的可讀或可寫觸發(fā),對可讀或可寫觸發(fā)事件集合中的套接字做對應(yīng)的處理。由于在本發(fā)明實施例中,根據(jù)業(yè)務(wù)請求是否進行了處理,將套接字加入到對應(yīng)的可讀或可寫觸發(fā)事件集合中,只對可讀或可寫觸發(fā)事件集合中的套接字進行處理,不需要反復(fù)清空套接字集合,統(tǒng)計套接字,輪詢套接字以查找鏈路,因此避免了每次網(wǎng)絡(luò)輸入輸出中對可讀或可寫套接字輪詢所消耗的時間,提高了業(yè)務(wù)請求處理的效率,適用于維護大量鏈路,節(jié)省了系統(tǒng)的資源。
文檔編號H04L29/08GK102202094SQ201110123649
公開日2011年9月28日 申請日期2011年5月13日 優(yōu)先權(quán)日2011年5月13日
發(fā)明者盧勤元, 孫軼超, 沈蓓潔 申請人:中興通訊股份有限公司