CN111444449A - 一种Http请求处理方法及装置 - Google Patents

一种Http请求处理方法及装置 Download PDF

Info

Publication number
CN111444449A
CN111444449A CN201811614132.8A CN201811614132A CN111444449A CN 111444449 A CN111444449 A CN 111444449A CN 201811614132 A CN201811614132 A CN 201811614132A CN 111444449 A CN111444449 A CN 111444449A
Authority
CN
China
Prior art keywords
data
processing
http request
module
transmission channel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811614132.8A
Other languages
English (en)
Inventor
崔俊
张歆明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811614132.8A priority Critical patent/CN111444449A/zh
Publication of CN111444449A publication Critical patent/CN111444449A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供了一种Http请求处理方法及装置,应用于基于Netty搭建的服务端,所述方法包括:接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;在所述数据通道中植入Spring MVC模块的核心对象;通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。基于本发明提供的方法不仅可以基于Netty处理高并发Http请求,还可以基于Spring MVC模块对Http请求进行分层处理,使得对Http请求的处理更加清晰,且有利于后期对服务端的维护和更新。

Description

一种Http请求处理方法及装置
技术领域
本发明涉及互联网技术领域,特别是涉及一种Http请求处理方法及装置。
背景技术
传统的web开发中,多采用php的nginx+fpm来实现第三方接口以处理Http请求。php-fpm:是一个主+多个子进程的模型,每次请求过来都要创建一个fastcgi进程,这种进程的开销在高并发请求的情况下对系统性能消耗是非常大的。并且进程不能无限制被创建,因为受限于操作系统本身的资源分配和调度。一般来讲单台机器的QPS为100左右,非常低,无法满足高并发需求。
图1示出了php-fpm进程管理示意图,图1中所示的Application 1~Application4(应用程序1~应用程序4)就可以是php-fpm进程,这个进程可以为多请求的web服务器分发出多个work的进程。因为每一个进程都是动态创建的,在创建每一个进程时都会消耗服务器性能。
发明内容
本发明提供了一种Http请求处理方法及装置以克服上述问题或者至少部分地解决上述问题。
根据本发明的一个方面,提供了一种Http请求处理方法,应用于基于Netty搭建的服务端,所述方法包括:
接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
在所述数据通道中植入Spring MVC模块的核心对象;
通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
可选地,初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,包括:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
可选地,所述在所述数据通道中植入SpringMVC框架的核心对象之前,还包括:
基于Servlet创建Spring MVC模块的核心对象。
可选地,所述在所述数据通道中植入Spring MVC的核心对象,包括:
将所述Spring MVC的核心对象设置到处理所述数据传输通道中的传输数据的数据管道中。
可选地,所述通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端,包括:
通过植入所述Spring MVC模块的核心对象的数据管道接收所述处理线程中的Http请求;
调度所述数据管道中内置的链式处理器处理所述Http请求;
将处理结果提交至所述数据传输通道,由所述数据传输通道回传至所述客户端。
可选地,所述调度内置的链式处理器处理所述Http请求,包括:
从所述Http请求获取参数信息,将所述参数信息适配到所述Spring MVC模块的Servlet请求;
为Servlet传入适配之后所述Servlet请求后启动所述Servlet中的预设函数方法对处理所述Servlet请求。
根据本发明的另一个方面,还提供了一种Http请求处理装置,应用于基于Netty搭建的服务端,所述装置包括:
接收模块,配置为接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化模块,配置为初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
植入模块,配置为在所述数据通道中植入Spring MVC模块的核心对象;
处理模块,配置为通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
可选地,所述初始化模块还配置为:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
可选地,所述装置还包括:
创建模块,配置为基于Servlet创建Spring MVC模块的核心对象。
可选地,所述植入模块还配置为:
将所述Spring MVC的核心对象设置到处理所述数据传输通道中的传输数据的数据管道中。
可选地,所述处理模块还配置为:
通过植入所述Spring MVC模块的核心对象的数据管道接收所述处理线程中的Http请求;
调度所述数据管道中内置的链式处理器处理所述Http请求;
将处理结果提交至所述数据传输通道,由所述数据传输通道回传至所述客户端。
可选地,所述处理模块还配置为:
从所述Http请求获取参数信息,将所述参数信息适配到所述Spring MVC模块的Servlet请求;
为Servlet传入适配之后所述Servlet请求后启动所述Servlet中的预设函数方法对处理所述Servlet请求。
根据本发明的另一个方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一项所述的Http请求处理方法。
根据本发明的另一个方面,还提供了一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一项所述的Http请求处理方法。
本发明提供了一种高效的Http请求处理方法及装置,在本发明提供的方法中,基于Netty搭建的服务端在接收到来自客户端的Http请求之后,先基于Netty分配处理线程,并在初始化数据传输通道时植入Spring MVC模块的核心对象,进而通过在Netty中植入的Spring MVC模块对Http请求进行处理。基于本发明提供的方法不仅可以基于Netty处理高并发Http请求,还可以基于Spring MVC模块对Http请求进行分层处理,使得对Http请求的处理更加清晰,且有利于后期对服务端的维护和更新。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是php-fpm进程管理示意图;
图2是根据本发明实施例的Http请求处理方法流程示意图;
图3是根据本发明实施例的Netty中植入Spring MVC模块的流程示意图;
图4是根据本发明实施例的Http请求处理装置结构示意图;
图5是根据本发明优选实施例的Http请求处理装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图2是根据本发明实施例的Http请求处理方法流程示意图,应用于基于Netty搭建的服务端,如图2所示,本发明实施例提供的Http请求处理方法可以包括:
步骤S202,接收来自客户端的Http请求,通过服务端的线程池为Http请求分配处理线程;
步骤S204,初始化服务端的数据传输通道以及处理数据传输通道中的传输数据的数据管道;
步骤S206,在数据通道中植入Spring MVC模块的核心对象;
步骤S208,通过植入Spring MVC模块的核心对象的数据管道接收并处理上述处理线程中的Http请求,将处理结果通过数据传输通道回传至客户端。
本发明实施例提供了一种高效的Http请求处理方法,基于Netty搭建的服务端在接收到来自客户端的Http请求之后,先基于Netty分配处理线程,并在初始化数据传输通道时植入Spring MVC模块的核心对象,进而通过在Netty中植入的Spring MVC模块对Http请求进行处理。基于本发明实施例提供的方法不仅可以基于Netty处理高并发Http请求,还可以基于Spring MVC模块对Http请求进行分层处理,使得对Http请求的处理更加清晰,且有利于后期对服务端的维护和更新。
Netty,是作为一个java开源框架,提供了异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty本身是基于非阻塞IO的框架,具有并发高,传输快和封装好的特点。
SpringMVC,是Spring Framework中专门为web应用设计的模块,提供了方便的路由管理,注解配置,并采用Spring IOC容器管理其中的bean。spring MVC是一个分层的javaweb开发框架,MVC模式提供了一个分层的体系结构,其中每一层对其它层进行了抽象,具体如下:
1.模型(Model):应用程序所使用的特定域信息的表现形式
2.视图(View):域模型的表现形式(通过使用诸如输入元素和按钮之类的用户界面元素,而这些元素与模型进行交互)。
3.控制器(Controller):主要负责解释用户的输入并转换为模型,然后将转换后的结果显示给用户。
本发明实施例通过Netty执行流程,同时个性化定制Spring MVC环境的Netty数据传输通道。使得当前的基于Spring MVC环境的netty数据传输通道可以直接构建基于Spring MVC的应用,达到Netty和Spring MVC两者优点的融合。
上述步骤S204提及,为Http请求分配处理线程之后,会初始化服务端的数据传输通道以及处理数据传输通道中的传输数据的数据管道,具体地,可创建自定义的Netty的数据通道初始化器;基于该初始化器初始化服务端的数据传输通道以及处理数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器,进而在数据通道中植入SpringMVC模块的核心对象。
在上述步骤S206在数据通道中植入Spring MVC模块的核心对象之前,需基于Servlet创建Spring MVC模块的核心对象,进而将Spring MVC的核心对象设置到处理数据传输通道中的传输数据的数据管道中。Spring MVC模块的核心对象可以包括:ApplicationContext,有了这个ApplicationContext对象,Spring MVC的所有组件等才有一个存活的环境。SpringMVC自身需要的所有对象都存储在这个ApplicationContext中。另外,在创建出核心对象ApplicationContext之后,为了让Netty中能够使用Spring MVC自身的开发特性,需让在Netty的基础上面能够适配Servlet,此时还需创建ServletContext和ServletConfig这些Servlet规范中必须的对象,有了Servlet相关的对象,Spring MVC的ApplicationContext才能发挥作用,这样Netty的高并发特点才能和SpringMVC便捷的开发特定合二为一。
在本发明实施例中,Netty中的数据管道是由多个链式处理器构成的,每一个处理器可负责处理特定的业务逻辑,多个处理器之间通过责任链模式联合起来,来处理整个业务逻辑。因此,上述步骤S208还可以包括:通过植入Spring MVC模块的核心对象的数据管道接收处理线程中的Http请求;调度数据管道中内置的链式处理器处理上述Http请求;将处理结果提交至数据传输通道,由数据传输通道回传至客户端。由于本发明实施例中主要是基于Spring MVC模块对Http请求进行处理,因此,调度数据管道中内置的链式处理器处理Http请求时,可以从Http请求获取参数信息,将上述参数信息适配到Spring MVC模块的Servlet请求;为Servlet传入适配之后Servlet请求后启动Servlet中的预设函数方法对处理Servlet请求。其中,参数信息可以包括uri、Http的请求头信息、Http请求的post参数信息等参数信息。
图3是根据本发明实施例的Netty中植入Spring MVC模块的流程示意图,参见图3可知,该方法可以包括:
S1,Http请求对Netty为基础的web服务器发起请求,Netty中的EventLoopGroup会为当前Http请求分配一个可用的EventLoop;
S2,EventLoopGroup初始化一个数据传输通道Channel和处理这个Channel中传输数据的数据管道ChannelPipeline;ChannelPipeline是有多个Handler构成的,每一个Handler负责处理特定的业务逻辑,多个Handler之间通过责任链模式联合起来,来处理整个业务逻辑;初始化Channel时会获取分配的EventLoop绑定到Channel上;在初始化ChannelPipeline的过程中,植入Servlet+Spring MVC的核心对象,最后把这个ChannelPipeline和数据传输通道channel进行关联;
S3,Channel把Http请求中的数据交付给ChannelPipeline进行数据处理;
S4,ChannelPipeline会调度处理当前Channel中传输的数据的链式处理器(即Handler 1~Handler N)来处理数据;
S5,ChannelPipeline中的链式处理器处理完成之后,会将处理结果返回至Channel并回传给客户端。
本发明实施例还提供了一种初始化具有Servlet+Spring MVC环境的NettyChannelPipeline的方法,该方法可以包括:
S2-1,创建Servlet+Spring MVC环境,并且设置到DispatcherServletChannelInitializer对象中;具体可以包括:首先模拟生成ServletContext对象,为Spring MVC提供宿主容器;其次,创建Spring MVC的核心对象,ApplicationContext,并且设置对应ServletContext和ServletConfig对象;最后,把Spring MVC的核心对象设置到Netty的ChannelPipeline中,完成ChannelPipeline的配置,称为DispatcherServletChannelInitializer,从而更好地利用Spring MVC方便的业务路由管理等诸多特定;
本实施例中,需先创建自定义的Netty的通道初始化器ChannelInitializer,初始化的ChannelInitializer的名称为DispatcherServletChannelInitializer,在这个对象的构造方法中需要构建ServletContext,ServletConfig和ApplicationContext这三个对象,用来适配最后的Servlet请求;代码示意如下:
MockServletContext servletContex=new MockServletContext();
MockServletConfig servletConfig=
new MockServletConfig(servletContext);
AnnotationConfigWebApplicationContextwac=
new AnnotationConfigWebApplicationContext();
wac.setServletContext(servletContext);
wac.setServletConfig(servletConfig);
wac.register(AppConfig.class)
wac.refresh();
创建出Servlet+Spring MVC所需的环境之后,会把生成的对象存这个类的成员变量,供后面处理Http请求使用;
this.dispatcherServlet=new DispatcherServlet(wac);
this.dispatcherServlet.init(servletConfig);
在本发明实施例中,初始化数据通道时,会先通过Channel获取自身业务逻辑的ChannelPipeline,然后在最后把ChannelPipeline中具体处理业务的Handler创建处理,即ServletNettyHandler;
pipiline.addLast(“Handler”,new ServletNettyHandler(this.dispatcherServelet))
S2-2,对Servlet+Spring MVC的调用流程完成ChannelPipeline中Handler的处理逻辑,确定可以进行请求的ServletNettyHandler;实现真正业务处理的逻辑单元ChannelPipeline,其中内置的处理器就是ServletNettyHandler,负责读取Http请求数据的方法是channelRead0();具体方法可以包括:
S2-2-1,从Netty的HTTP请求中获取uri等方面的信息,适配到Spring MVC的Servlet请求,即把Netty的Http请求适配转换成Servlet需要的Http请求的格式;
首先,填充Servlet Request的基本信息:把FullHttpRequest也就是Netty的request的uri,pathinfo和method都赋值给ServletRequest;
其次,填充Servlet Request的数据信息,把NettyRequest中的数据填充到ServletRequest中;
S2-2-2,为Servlet传入适配之后的Servlet请求,并启动Servlet的“service()”方法队请求进行处理,并把结果返回给Netty的数据通道Channel。
调用在DispatcherServletChannelinitializer初始化中创建的dispatherservlet这个Servlet的service方法,并把S3-2-1中适配出来的Servlet的Http请求传入Servlet的service方法,对请求进行处理,最终返回Servlet的Http Response;
this.servlet.service(servletRequest,servletResponse)
S2-2-3,对Servlet的Http Response进行适配,适配成Netty的Response;
S2-2-4,将Netty的Http Response写入ChannelHandler的Context,代表这个通过SpringMVC+Servlet处理之后的响应传回给Netty的Channel最终返回给客户端。
S2-3,最后再把自定义的DispatcherServletChannelInitializer添加到Netty的初始化列表中,即完成了Netty和SpringMVC的整合。
childHandler(new DispatcherServletChannelInitializer())
基于本发明实施例提供的方法不会因为业务逻辑的增多而变化,仅仅需要整合一次。当新来一个业务逻辑的时候,还是按照Spring MVC的方式去开发,整个过程还是以Spring MVC的方式来进行开发,用户根本没有感知到Netty的存在,但是网络效率因为Netty却大大提高。
基于同一发明构思,本发明实施例还提供了一种Http请求处理装置,应用于基于Netty搭建的服务端,如图4所示,本发明实施例提供的Http请求处理装置可以包括:
接收模块410,配置为接收来自客户端的Http请求,通过服务端的线程池为Http请求分配处理线程;
初始化模块420,配置为初始化服务端的数据传输通道以及处理数据传输通道中的传输数据的数据管道;
植入模块430,配置为在数据通道中植入Spring MVC模块的核心对象;
处理模块440,配置为通过植入Spring MVC模块的核心对象的数据管道接收并处理处理线程中的Http请求,将处理结果通过数据传输通道回传至客户端。
在本发明一优选实施例中,初始化模块420还可以配置为:
创建自定义的Netty的数据通道初始化器;
基于初始化器初始化服务端的数据传输通道以及处理数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
在本发明一优选实施例中,如图5所示,上述实施例还可以包括:
创建模块450,配置为基于Servlet创建Spring MVC模块的核心对象。
在本发明一优选实施例中,植入模块430还可以配置为:
将Spring MVC的核心对象设置到处理数据传输通道中的传输数据的数据管道中。
在本发明一优选实施例中,处理模块440还可以配置为:
通过植入Spring MVC模块的核心对象的数据管道接收处理线程中的Http请求;
调度数据管道中内置的链式处理器处理Http请求;
将处理结果提交至数据传输通道,由数据传输通道回传至客户端。
在本发明一优选实施例中,处理模块440还可以配置为:
从Http请求获取参数信息,将上述参数信息适配到Spring MVC模块的Servlet请求;
为Servlet传入适配之后Servlet请求后启动Servlet中的预设函数方法对处理Servlet请求。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上述任一实施例所述的Http请求处理方法。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当计算机程序代码被处理器运行时,导致计算设备执行上述任一实施例所述的Http请求处理方法。
本发明提供了一种高效的Http请求处理方法及装置,基于本发明实施例提供的方案,通过分析Netty和SpringMVC的运行原理,通过Netty执行流程,同时个性化定制SpringMVC环境的Netty数据传输通道,使得当前的基于Spring MVC环境的netty数据传输通道可以直接构建基于Spring MVC的应用,有效地把这两个框架进行了整合,既利用了Netty高效率的网络通信,又可以在这个高效的网络通信里面使用Spring MVC便利的属性,在提升Http请求处理效率的同时,还大大提高了基于Java技术栈的高并发数据接口的开发效率。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
根据本发明实施例的一个方面,提供了A1.一种Http请求处理方法,应用于基于Netty搭建的服务端,所述方法包括:
接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
在所述数据通道中植入Spring MVC模块的核心对象;
通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
A2.根据A1所述的方法,其中,初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,包括:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
A3.根据A1所述的方法,其中,所述在所述数据通道中植入SpringMVC框架的核心对象之前,还包括:
基于Servlet创建Spring MVC模块的核心对象。
A4.根据A3所述的方法,其中,所述在所述数据通道中植入Spring MVC的核心对象,包括:
将所述Spring MVC的核心对象设置到处理所述数据传输通道中的传输数据的数据管道中。
A5.根据A3所述的方法,其中,所述通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端,包括:
通过植入所述Spring MVC模块的核心对象的数据管道接收所述处理线程中的Http请求;
调度所述数据管道中内置的链式处理器处理所述Http请求;
将处理结果提交至所述数据传输通道,由所述数据传输通道回传至所述客户端。
A6.根据A5所述的方法,其中,所述调度所述数据管道中内置的链式处理器处理所述Http请求,包括:
从所述Http请求获取参数信息,将所述参数信息适配到所述Spring MVC模块的Servlet请求;
为Servlet传入适配之后所述Servlet请求后启动所述Servlet中的预设函数方法对处理所述Servlet请求。
根据本发明实施例的另一个方面,还提供了B7.一种Http请求处理装置,应用于基于Netty搭建的服务端,所述装置包括:
接收模块,配置为接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化模块,配置为初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
植入模块,配置为在所述数据通道中植入Spring MVC模块的核心对象;
处理模块,配置为通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
B8.根据B7所述的装置,其中,所述初始化模块还配置为:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
B9.根据B7所述的装置,其中,还包括:
创建模块,配置为基于Servlet创建Spring MVC模块的核心对象。
B10.根据B9所述的装置,其中,所述植入模块还配置为:
将所述Spring MVC的核心对象设置到处理所述数据传输通道中的传输数据的数据管道中。
B11.根据B9所述的装置,其中,所述处理模块还配置为:
通过植入所述Spring MVC模块的核心对象的数据管道接收所述处理线程中的Http请求;
调度所述数据管道中内置的链式处理器处理所述Http请求;
将处理结果提交至所述数据传输通道,由所述数据传输通道回传至所述客户端。
B12.根据B11所述的装置,其中,所述处理模块还配置为:
从所述Http请求获取参数信息,将所述参数信息适配到所述Spring MVC模块的Servlet请求;
为Servlet传入适配之后所述Servlet请求后启动所述Servlet中的预设函数方法对处理所述Servlet请求。
根据本发明实施例的另一个方面,还提供了C13.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行A1-A6任一项所述的Http请求处理方法。
根据本发明实施例的另一个方面,还提供了D14.一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行A1-A6任一项所述的Http请求处理方法。

Claims (10)

1.一种Http请求处理方法,应用于基于Netty搭建的服务端,所述方法包括:
接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
在所述数据通道中植入Spring MVC模块的核心对象;
通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
2.根据权利要求1所述的方法,其中,初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,包括:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
3.根据权利要求1所述的方法,其中,所述在所述数据通道中植入SpringMVC框架的核心对象之前,还包括:
基于Servlet创建Spring MVC模块的核心对象。
4.根据权利要求3所述的方法,其中,所述在所述数据通道中植入Spring MVC的核心对象,包括:
将所述Spring MVC的核心对象设置到处理所述数据传输通道中的传输数据的数据管道中。
5.根据权利要求3所述的方法,其中,所述通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端,包括:
通过植入所述Spring MVC模块的核心对象的数据管道接收所述处理线程中的Http请求;
调度所述数据管道中内置的链式处理器处理所述Http请求;
将处理结果提交至所述数据传输通道,由所述数据传输通道回传至所述客户端。
6.根据权利要求5所述的方法,其中,所述调度所述数据管道中内置的链式处理器处理所述Http请求,包括:
从所述Http请求获取参数信息,将所述参数信息适配到所述Spring MVC模块的Servlet请求;
为Servlet传入适配之后所述Servlet请求后启动所述Servlet中的预设函数方法对处理所述Servlet请求。
7.一种Http请求处理装置,应用于基于Netty搭建的服务端,所述装置包括:
接收模块,配置为接收来自客户端的Http请求,通过服务端的线程池为所述Http请求分配处理线程;
初始化模块,配置为初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道;
植入模块,配置为在所述数据通道中植入Spring MVC模块的核心对象;
处理模块,配置为通过植入所述Spring MVC模块的核心对象的数据管道接收并处理所述处理线程中的Http请求,将处理结果通过所述数据传输通道回传至所述客户端。
8.根据权利要求7所述的装置,其中,所述初始化模块还配置为:
创建自定义的Netty的数据通道初始化器;
基于所述初始化器初始化所述服务端的数据传输通道以及处理所述数据传输通道中的传输数据的数据管道,为Spring MVC模块提供宿主容器。
9.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行权利要求1-6任一项所述的Http请求处理方法。
10.一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求1-6任一项所述的Http请求处理方法。
CN201811614132.8A 2018-12-27 2018-12-27 一种Http请求处理方法及装置 Pending CN111444449A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811614132.8A CN111444449A (zh) 2018-12-27 2018-12-27 一种Http请求处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811614132.8A CN111444449A (zh) 2018-12-27 2018-12-27 一种Http请求处理方法及装置

Publications (1)

Publication Number Publication Date
CN111444449A true CN111444449A (zh) 2020-07-24

Family

ID=71653865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811614132.8A Pending CN111444449A (zh) 2018-12-27 2018-12-27 一种Http请求处理方法及装置

Country Status (1)

Country Link
CN (1) CN111444449A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559146A (zh) * 2020-12-07 2021-03-26 河南中烟工业有限责任公司 一种客户端与数据终端服务端的通讯方法
CN112671750A (zh) * 2020-12-17 2021-04-16 杭州安恒信息技术股份有限公司 一种跨语言数据交互方法及相关装置
CN114895905A (zh) * 2022-05-06 2022-08-12 北京中睿天下信息技术有限公司 一套基于pathinfo路由实现的mvc模型系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130179947A1 (en) * 2012-01-05 2013-07-11 Adept Cloud, Inc. System and method for decentralized online data transfer and synchronization
CN105867948A (zh) * 2016-04-26 2016-08-17 江苏物联网研究发展中心 基于AJAX和SpringMVC的WEB开发方法
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
CN107517259A (zh) * 2017-08-28 2017-12-26 四川长虹电器股份有限公司 一种简易Web服务器实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130179947A1 (en) * 2012-01-05 2013-07-11 Adept Cloud, Inc. System and method for decentralized online data transfer and synchronization
CN105867948A (zh) * 2016-04-26 2016-08-17 江苏物联网研究发展中心 基于AJAX和SpringMVC的WEB开发方法
CN106230984A (zh) * 2016-09-12 2016-12-14 深圳市彬讯科技有限公司 一种采用Netty框架实现网页服务通道的方法
CN107517259A (zh) * 2017-08-28 2017-12-26 四川长虹电器股份有限公司 一种简易Web服务器实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Y. WANG: ""Performance Comparison and Evaluation of WebSocket Frameworks: Netty, Undertow, Vert.x, Grizzly and Jetty, "", 《2018 1ST IEEE INTERNATIONAL CONFERENCE ON HOT INFORMATION-CENTRIC NETWORKING (HOTICN)》, 30 June 2018 (2018-06-30), pages 13 - 17 *
金志国: ""基于Netty的HTTP客户端的设计与实现"", 《电信工程技术与标准化》, 31 January 2014 (2014-01-31), pages 84 - 88 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559146A (zh) * 2020-12-07 2021-03-26 河南中烟工业有限责任公司 一种客户端与数据终端服务端的通讯方法
CN112559146B (zh) * 2020-12-07 2023-04-18 河南中烟工业有限责任公司 一种客户端与数据终端服务端的通讯方法
CN112671750A (zh) * 2020-12-17 2021-04-16 杭州安恒信息技术股份有限公司 一种跨语言数据交互方法及相关装置
CN114895905A (zh) * 2022-05-06 2022-08-12 北京中睿天下信息技术有限公司 一套基于pathinfo路由实现的mvc模型系统

Similar Documents

Publication Publication Date Title
US8959523B2 (en) Automated virtual machine placement planning using different placement solutions at different hierarchical tree levels
Kephart et al. Achieving self-management via utility functions
EP2751663B1 (en) Cloud-based build service
Borgdorff et al. Distributed multiscale computing with MUSCLE 2, the multiscale coupling library and environment
US9965322B2 (en) Scheduling tasks in a distributed processing system with both reconfigurable and configurable processors
CN110083455B (zh) 图计算处理方法、装置、介质及电子设备
Venticinque et al. Agents based cloud computing interface for resource provisioning and management
US20120203823A1 (en) Apparatus, systems and methods for deployment and management of distributed computing systems and applications
CN111444449A (zh) 一种Http请求处理方法及装置
US20160085738A1 (en) Cloud-Based Parallel Computation Using Actor Modules
US10303444B2 (en) Composable application session parameters
US20210191759A1 (en) Elastic Execution of Machine Learning Workloads Using Application Based Profiling
CN104199912B (zh) 一种任务处理的方法及装置
KR20190028210A (ko) 컨테이너 기반 인공지능 어플리케이션을 배포하는 클라우드 서비스 방법과 시스템
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
US11683232B2 (en) Methods and apparatus to implement cloud specific functionality in a cloud agnostic system
KR20210122849A (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
KR20210105378A (ko) 프로그래밍 플랫폼의 사용자 코드 작동 방법 및 플랫폼, 노드, 기기, 매체
CN114327399A (zh) 分布式训练方法、装置、计算机设备、存储介质和产品
US20100023950A1 (en) Workflow processing apparatus
CN113391925A (zh) 云资源管理方法、系统、介质、计算机设备
Zschörnig et al. A cloud-based Analytics-Platform for user-centric Internet of Things domains–Prototype and Performance Evaluation
Dorier et al. Towards elastic in situ analysis for high-performance computing simulations
Khoshkbarforoushha et al. Dimensions for evaluating cloud resource orchestration frameworks
US10409762B2 (en) Remote direct memory access-based on static analysis of asynchronous blocks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination