一种网络请求的处理方法和系统、网络服务提供装置制造方法及图纸

技术编号:8325953 阅读:134 留言:0更新日期:2013-02-14 08:51
本申请提供了一种网络请求的处理方法和系统、一种网络服务提供装置,其中的处理方法具体包括:接收浏览器客户端提交的网络请求;依据该网络请求,初始化相应的动作对象;所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕;所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。本申请能够大大减少网络请求的响应时间。

【技术实现步骤摘要】
一种网络请求的处理方法和系统、网络服务提供装置
本申请涉及网络请求处理
,特别是涉及一种网络请求的处理方法和系统、一种网络服务提供装置。
技术介绍
现有的业务系统往往充斥着大量网络请求的处理。例如,每个网络服务提供者都希望他们的网站拥有广泛的用户群并且能够在同一时间内为尽量多的用户提供服务。特别是提供在线事务处理的网站,比如银行的网站,网上购物的网站等。对于这些网站而言,同时在线的用户数越多就意味着能够处理的事务量越多,进而网络服务提供者能够获得的收益也就越丰厚。但是,在网络请求的数量达到一定的量级时,比如较为复杂的电子商务网站页面, 在性能分析时,发现后台代码执行过程中90%的时间都是处于等待外部资源的响应,CPU 利用率不高(在10%以下),单次网络请求的响应时间在200ms左右,这样,tps (每秒处理请求数,Transaction Per Second)为 20 并发 * (1000/200) = 100。针对上述性能不高的缺点,现有技术通常使用页面Ajax (异步JavaScript和XML, Asynchronous JavaScript and XML),在前台实现数据的异步加载。以HTML(文本标记语言,Hypertext Markup Language)页面渲染的网络请求为例,现有技术加载数据的方法具体可以包括步骤I、浏览器接收来自用户的HTML页面渲染的请求;步骤2、浏览器首先给页面的一块区域渲染一块空的div id = A内容和一块div id = B的内容;div是指HTML页面中的div标签,div id = A主要是代表HTML页面上的一块显示内容;步骤3、浏览器继续渲染页面的其他内容;步骤4、浏览器在页面底部执行具体的JavaScript时,向服务器发起divid = A的网络请求,等相应数据结果返回后填充对应的div内容,然后向服务器发起div id = B的网络请求,返回后同样填充。现有技术通过前台HTML页面的异步加载处理,能够减少网络请求的响应时间,提升用户体验,但浏览器在向服务器发起网络请求时都会发起一次HTTP(超文本传输协议, HyperText Transfer Protocol)调用,由于页面上的每个区块都会发起一次网络请求,这样,在页面区块比较多时,就会发起多次HTTP调用。而每个HTTP调用都会发起一次和服务端的TCP(传输控制协议,Transmission Control Protocol)链接,并且,后台服务器会为每个HTTP调用分配一个线程处理,每个线程都会占用系统的一定(例如2MB)的内存;这样,在线程数量多的情况下,操作系统的调度,会导致出现大量的上下文切换和频繁中断响应,所述内存消耗和线程调度消耗都会严重影响后台服务器的性能。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够更好地处理来自用户的网络请求,以减少网络请求的响应时间。
技术实现思路
本申请所要解决的技术问题是提供一种网络请求的处理方法和系统、一种网络服务提供装置,能够大大减少网络请求的响应时间。为了解决上述问题,本申请公开了一种网络请求的处理方法,包括网络服务器接收浏览器客户端提交的网络请求;网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括根据 预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。优选的,所述生成与所述被调用服务相应的代理服务的步骤,包括依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;依据所述类信息,搜集所述被调用服务的类的方法;采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。优选的,所述生成与该代理服务相应的代理返回对象的步骤,包括在某一代理服务将相应的被调用服务提交至线程池时,线程池返回与所述被调用服务相应的线程句柄;依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象;所述检查线程池中相应的被调用服务是否加载完毕的步骤为,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。优选的,所述依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象的步骤,包括依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息;依据所述类信息,搜集所述被调用服务的类的方法;采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。优选的,所述将该被调用服务提交至线程池的方法为,将被调用服务的名称、类方法名称和类方法参数提交至线程池。优选的,所述方法还包括预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种;所述采用多线程池对该代理服务进行加载的步骤为,依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。优选的,所述依据所有代理服务的加载结果,处理得到相应的网页代码结果的步骤,包括采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。优选的,通过如下步骤对所述动作对象中代理服务发起调用检测所述动作对象中代理服务的服务依赖关系;按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。优选的,所述网络请求包括针对主体页面的网络请求。另一方面,本申请还公开了一种网络服务提供装置,其与网络服务器相连,包括配置模块,用于预先定义需要拦截的被调用服务信息;代理模块,包括代理服务生成子模块,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请求相应;及代理本文档来自技高网
...

【技术保护点】
一种网络请求的处理方法,其特征在于,包括:网络服务器接收浏览器客户端提交的网络请求;网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括:根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象;所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载;在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回;所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待;所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。

【技术特征摘要】
1.一种网络请求的处理方法,其特征在于,包括 网络服务器接收浏览器客户端提交的网络请求; 网络服务器依据该网络请求,初始化相应的动作对象,所述初始化过程包括根据预先定义的需要拦截的被调用服务信息,拦截需要向所述动作对象中注入的被调用服务,生成与所述被调用服务相应的代理服务,并注入至所述动作对象; 所述代理服务在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池,由多线程池对该被调用服务进行加载; 在某一代理服务将相应的被调用服务提交至线程池时,生成与该代理服务相应的代理返回对象;其中,下一代理服务的调用等待直至上一代理服务的代理返回对象返回; 所述代理返回对象在接受调用时,检查线程池中相应的被调用服务是否加载完毕,若是,则提取加载结果并返回给所述网络服务器,否则,进行阻塞等待; 所述网络服务器依据所有代理服务的加载结果,处理得到相应的网页代码结果,并一次性返回给浏览器客户端。2.如权利要求I所述的方法,其特征在于,所述生成与所述被调用服务相应的代理服务的步骤,包括 依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息; 依据所述类信息,搜集所述被调用服务的类的方法; 采用字节码处理技术,生成与所述被调用服务相应的代理服务的类和代理服务的类的方法,其中,所述代理服务的类继承相应被调用服务的类,所述代理服务的类的方法重载相应被调用服务的类的方法,所述代理服务的类的方法包括将该被调用服务提交至线程池的方法。3.如权利要求I所述的方法,其特征在于,所述生成与该代理服务相应的代理返回对象的步骤,包括 在某一代理服务将相应的被调用服务提交至线程池时,线程池返回与所述被调用服务相应的线程句柄; 依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象; 所述检查线程池中相应的被调用服务是否加载完毕的步骤为,依据线程句柄检查线程池中相应的被调用服务是否加载完毕。4.如权利要求3所述的方法,其特征在于,所述依据所述线程句柄和预先定义的需要拦截的被调用服务信息,生成与该代理服务相应的代理返回对象的步骤,包括 依据预先定义的需要拦截的被调用服务信息,分析所述被调用服务的类信息; 依据所述类信息,搜集所述被调用服务的类的方法; 采用字节码处理技术,生成与所述被调用服务相应的代理返回对象的类和代理返回对象的类的方法,其中,所述代理返回对象的类继承相应被调用服务的返回对象类,所述代理返回对象的类的方法重载相应被调用服务的返回对象类的方法,所述代理返回对象的类的方法包括依据线程句柄检查线程池中相应的被调用服务是否加载完毕的方法。5.如权利要求I所述的方法,其特征在于,所述将该被调用服务提交至线程池的方法为,将被调用服务的名称、类方法名称和类方法参数提交至线程池。6.如权利要求I所述的方法,其特征在于,还包括 预置被调用服务的异步加载信息,所述被调用服务的异步加载信息包括线程池的大小、任务就绪队列、线程处理模型的行为定义和线程之间数据共享的行为中的一种或多种; 所述采用多线程池对该代理服务进行加载的步骤为,依据所述被调用服务的异步加载信息,采用多线程池对该代理服务进行加载。7.如权利要求I所述的方法,其特征在于,所述依据所有代理服务的加载结果,处理得到相应的网页代码结果的步骤,包括 采用基于Java语言的服务器端脚本技术将所有代理服务的加载结果在页面上进行组装,形成最后的页面代码结果。8.如权利要求I所述的方法,其特征在于,通过如下步骤对所述动作对象中代理服务发起调用 检测所述动作对象中代理服务的服务依赖关系; 按照所述服务依赖关系中代理服务的执行顺序,对所述动作对象中代理服务发起调用,其中,后一个代理任务阻塞等待至前一个代理任务的加载结果返回。9.如权利要求I所述的方法,其特征在于,所述网络请求包括针对主体页面的网络请求。10.一种网络服务提供装置,其特征在于,其与网络服务器相连,包括 配置模块,用于预先定义需要拦截的被调用服务信息; 代理模块,包括 代理服务生成子模块,用于在初始化动作对象的过程中,根据所述配置模块的定义拦截需要向所述动作对象中注入的被调用服务,并生成与所述被调用服务相应的代理服务,由所述网络服务器注入至所述动作对象,其中,所述代理服务用于在接受调用时,将调用请求委托给相应的被调用服务,并将该被调用服务提交至线程池模块,所述动作对象与浏览器客户端提交的网络请...

【专利技术属性】
技术研发人员:楼江航
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1