[发明专利]处理服务请求的方法和装置在审
申请号: | 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.vipzhuanli.com/pat/books/201410583384.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据备份方法和系统
- 下一篇:基于数据服务访问情况动态调整数据服务集群的方法