[發明專利]處理服務請求的方法和裝置在審
| 申請號: | 201410242875.2 | 申請日: | 2014-07-23 |
| 公開(公告)號: | CN104065706A | 公開(公告)日: | 2014-09-24 |
| 發明(設計)人: | 王子武;劉泉 | 申請(專利權)人: | 世紀禾光科技發展(北京)有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L29/06 |
| 代理公司: | 北京慶峰財智知識產權代理事務所(普通合伙) 11417 | 代理人: | 劉元霞 |
| 地址: | 100083 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 處理 服務 請求 方法 裝置 | ||
技術領域
本發明涉及網絡計算領域,特別涉及一種異步處理API服務請求的方法和裝置。
背景技術
作為開源的servlet容器,Jetty為基于Java的web內容提供運行環境。Jetty的API以一組JAR包的形式發布。開發人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行的Java應用提供網絡和web連接。在服務器客戶端架構中,所有的請求都接入到Jetty的servlet中,如果后端處理速度慢,則導致大量的請求會超時。常規的程序遇到這種情況(假設沒有設置超時)通常會等待,此時線程會白白浪費時間,一旦請求增多,線程池及等待隊列會變滿,從而導致網站無法服務。目前已有程序使用future task來解決該問題,但future task帶有輪詢的性質,并發處理請求能力有限,無論怎樣或多或少會帶有阻塞。
Continuation是一種可以使HTTP請求可以被暫時掛起,并且當掛起超時或非同步的事件發生時,被掛起的HTTP請求可以被重新恢復的機制。這個機制的實現主要在SelectChannelConnector類中。SelectChannelConnector允許維持每個連接開放而不用消耗一個線程。當連接掛起時,Connector將請求維持在未決Continuations隊列里,用來服務請求的線程返回給TheadPool,這樣,該線程又可以服務于其他請求。暫停的請求停留在未決Continuations隊列里直到指定的過期時間,或者在它的Continuation上調用resume()方法。Continuation.suspend()會拋出一個特殊的運行時異常:RetryRequest。這個異常將傳播到servlet以外,然后通過過濾器傳回,再由SelectChannelConnector捕獲,將請求放入處于等待狀態的Continuation隊列中,此時HTTP連接并不關閉,而當前的線程卻可以被放回線程池,供別的請求使用。Continuation機制實際就是對HTTP協議執行NIO(非阻塞I/O)。每個環節都是異步處理,這樣極大的提高了請求的TPS(每秒能夠處理的事務量)以及并發的性能。
然而,Jetty continuation需要在應用中使用應用級的線程池來完成一些IO任務,這個在普通的web編程并不常見。在應用的第一次請求中,需要調用AsyncContinuation.suspend,完成一個狀態的轉換,以及產生一個超時任務,將超時任務派發給應用線程池完畢后,Jetty回收該請求,線程IO任務在應用線程中完成后,然后通過AsyncContinuation.resume或者complete等方法通知Jetty任務完成Jetty然后會再次分配一個worker線程處理該請求,如果邏輯復雜,如并行的多次IO會分配多個worker線程。引入Jetty continuation帶來的負面作用是需要仔細的切割各類IO任務,編程模型因而會變得復雜。
針對相關技術中所存在的上述問題,目前尚未提出有效的解決方案。
發明內容
為解決上述現有技術所存在的問題,本發明提出了一種處理服務請求的方法和裝置。本發明首先提出了一種處理服務請求的方法,包括:
步驟一,在Jetty Continuation的請求處理中建立異步層次結構,包括傳輸層,轉換內部數據層,轉換外部數據層,接出層;
步驟二,利用Continuation異步處理請求;
步驟三,在所述異步層次結構中逐級異步發送請求,并異步返回處理結果,并通知釋放請求。
優選地,所述步驟二進一步包括:
獲取當前請求的Continuation對象,
設置監聽器,
在處理請求后掛起并釋放線程。
優選地,該方法基于JSR315規范特性來處理異步請求。
優選地,所述請求的接入方式包括DHReqContinuationServletHandler和DHReqAsynServletHandler,均抽象為AbstractDHReqServletHandler。
優選地,所述請求接入方式基于servlet3.0和Jetty8的continuation的掛起/消費策略來實現,這針對不同的servlet容器來切換不同的異步請求處理機制。
優選地,所述步驟三進一步包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于世紀禾光科技發展(北京)有限公司,未經世紀禾光科技發展(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410242875.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種地圖顯示方法及相關設備
- 下一篇:一種遠程主機接入的控制方法





