处理服务请求的方法和装置制造方法及图纸

技术编号:14932700 阅读:87 留言:0更新日期:2017-03-31 14:40
本发明专利技术提供了处理服务请求的方法和装置,该方法包括,在Jetty Continuation的请求处理中建立异步层次结构,包括传输层,转换内部数据层,转换外部数据层,接出层;利用Continuation异步处理请求;在所述异步层次结构中逐级异步发送请求,并异步返回处理结果,并通知释放请求。本发明专利技术层次结构简单和清晰,易于和维护,最大程度降低了耦合,提高了系统性能。

【技术实现步骤摘要】

本专利技术涉及网络计算领域,特别涉及一种异步处理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异步处理请求;发送和返回模块,用于在所述异步层次结构中逐级异步发送请求,并异步返回处理结果,并通知释放请求。所述Continuation模块进一步包括:获取子模块,用于获取当前请求的Continuation对象,监听子模块,用于设置监听器,挂起子模块,用于在处理请求后挂起并释放线程。所述发送和返回模块进一步包括;调用子模块,用于在所述接出层收到该请求后,进行服务化API调用,返回子模块,用于将处理结果逐步返回至转换外部数据层,转换内部数据层,和传输层,释放子模块,用于通知Continuation释放请求,返回处理数据至servlet。相比于现有技术,本专利技术的技术方案层次结构简单和清晰可见,每一层对应的代码均具有语义,易于和维护,最大程度降低了耦合。由于每层都是异步处理,系统性能被提升,具有应对未来大并发处理的能力提高请求访问的TPS并发。具体实施方式本专利技术提出了一种处理服务请求的方法,包括:步骤一,在JettyContinuation的请求处理中建立异步层次结构,包括传输层,转换内部数据层,转换外部数据层,接出层;步骤二,利用Continuation异步处理请求;步骤三,在所述异步层次结构中逐级异步发送请求,并异步返回处理结果,并通知释放请求。步骤二包括:取当前请求的Continuation对象,设置监听器,在处理请求后挂起并释放线程。该方法基于JSR315规范特性来处理异步请求。所述请求的接入方式包括DHReqContinuationServletHandler和DHReqAsynServletHandler,均抽象为AbstractDHReqServletHandler。所述请求接入方式基于servlet3.0和Jetty8的continuation的挂起消费策略来实现,这针对不同的servlet容器来切换不同的异步请求处理机制。所述步骤三进一步包括:所述接出层收到该请求后,进行服务化API调用,将处理结果逐步返回至转换外部数据层,转换内部数据层,和传输层,通知Continuation释放请求,返回处理数据至servlet。该方法还包括,当某一时刻请求大量接入时,不需要等待线程释放,而是将线程挂起,处理完毕后通知Jetty,此时Jetty再启用一个新的线程再次处理请求。根据本专利技术的另一方面,提供了一种处理服务请求的装置,包括:模型建立模块,用于在JettyContinu本文档来自技高网
...

【技术保护点】
一种处理服务请求的方法,其特征在于,包括:步骤一,在Jetty Continuation的请求处理中建立异步层次结构,包括传输层,转换内部数据层,转换外部数据层,接出层;步骤二,利用Continuation异步处理请求;步骤三,在所述异步层次结构中逐级异步发送请求,并异步返回处理结果,并通知释放请求。

【技术特征摘要】
1.一种处理服务请求的方法,其特征在于,包括:
步骤一,在JettyContinuation的请求处理中建立异步层次结构,包括传输层,
转换内部数据层,转换外部数据层,接出层;
步骤二,利用Continuation异步处理请求;
步骤三,在所述异步层次结构中逐级异步发送请求,并异步返回处理结果,
并通知释放请求。
2.根据权利要求1所述的处理服务请求的方法,其特征在于,所述步骤二进一
步包括获取当前请求的Continuation对象,设置监听器,在处理请求后挂起并
释放...

【专利技术属性】
技术研发人员:李东
申请(专利权)人:青岛金讯网络工程有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1