[發明專利]處理服務請求的方法和裝置在審
| 申請號: | 201410583384.4 | 申請日: | 2014-10-27 |
| 公開(公告)號: | CN105630611A | 公開(公告)日: | 2016-06-01 |
| 發明(設計)人: | 李東 | 申請(專利權)人: | 青島金訊網絡工程有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F9/48 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 266100 山東*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 處理 服務 請求 方法 裝置 | ||
技術領域
本發明涉及網絡計算領域,特別涉及一種異步處理API服務請求的方法和裝 置。
背景技術
Continuation是一種可以使HTTP請求可以被暫時掛起,并且當掛起超時 或非同步的事件發生時,被掛起的HTTP請求可以被重新恢復的機制。這個機 制的實現主要在SelectChannelConnector類中。SelectChannelConnector允 許維持每個連接開放而不用消耗一個線程。當連接掛起時,Connector將請求 維持在未決Continuations隊列里,用來服務請求的線程返回給TheadPool, 這樣,該線程又可以服務于其他請求。暫停的請求停留在未決Continuations 隊列里直到指定的過期時間,或者在它的Continuation上調用resume方法。 Continuation.suspend會拋出一個特殊的運行時異常:RetryRequest,這個異 常將傳播servlet以外,然后通過過濾器傳回再由SelectChannelConnector捕 獲,將請求放入處于等待狀態的Continuation隊列中,此時HTTP連接并不關 閉,而當前的程卻可以被放回線程池,供別的請求使用。Continuation機制實 際就是對HTTP協議執行NIO(非阻塞I/O)。每個環節都是異步處理,這樣極大 的提高了請求的TPS(每秒能夠處理的事務量)以及并發的性能。
然而,Jettycontinuation需要在應用中使用應用級的線程池來完成一些 IO任務,這個在普通的web編程并不常見。在應用的第一次請求中,需要調用 AsyncContinuation.suspend,完成一個狀態的轉換,以及產生一個超時任務, 將超時任務派發給應用線程池完畢后,Jetty回收該請求,線程IO任務在應用 線程中完成后,然后通過AsyncContinuation.resume或者complete等方法通 知Jetty任務完成Jetty然后會再次分配一個worker線程處理該請求,如果邏 輯復雜,如并行的多次IO會分配多個worker線程。引入Jettycontinuation 帶來的負面作用是需要仔細的切割各類IO任務,編程模型因而會變得復雜。
發明內容
為解決上述現有技術所存在的問題,本發明提出了一種處理服務請求的方 法和裝置。本發明首先提出了一種處理服務請求的方法,包括:
步驟一,在JettyContinuation的請求處理中建立異步層次結構,包括傳 輸層,轉換內部數據層,轉換外部數據層,接出層;
步驟二,利用Continuation異步處理請求;
步驟三,在所述異步層次結構中逐級異步發送請求,并異步返回處理結果, 并通知釋放請求。
步驟二包括:取當前請求的Continuation對象,設置監聽器,在處理請 求后掛起并釋放線程。該方法基于JSR315規范特性來處理異步請求。
所述請求的接入方式包括DHReqContinuationServletHandler和 DHReqAsynServletHandler,均抽象為AbstractDHReqServletHandler。
所述請求接入方式基于servlet3.0和Jetty8的continuation的掛起 消費策略來實現,這針對不同的servlet容器來切換不同的異步請求處理機 制。
所述步驟三進一步包括:所述接出層收到該請求后,進行服務化API調用, 將處理結果逐步返回至轉換外部數據層,轉換內部數據層,和傳輸層,通知 Continuation釋放請求,返回處理數據至servlet。
該方法還包括,當某一時刻請求大量接入時,不需要等待線程釋放,而是 將線程掛起,處理完畢后通知Jetty,此時Jetty再啟用一個新的線程再次處 理請求。
根據本發明的另一方面,提供了一種處理服務請求的裝置,包括:模型建 立模塊,用于在JettyContinuation的請求處理中建立異步層次結構,包括 傳輸層,轉換內部數據層,轉換外部數據層,接出層;Continuation模塊,用 于利用Continuation異步處理請求;發送和返回模塊,用于在所述異步層次 結構中逐級異步發送請求,并異步返回處理結果,并通知釋放請求。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于青島金訊網絡工程有限公司,未經青島金訊網絡工程有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410583384.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:數據備份方法和系統
- 下一篇:基于數據服務訪問情況動態調整數據服務集群的方法





