CN105094988A - 基于http请求的数据处理方法和装置 - Google Patents

基于http请求的数据处理方法和装置 Download PDF

Info

Publication number
CN105094988A
CN105094988A CN201510497651.0A CN201510497651A CN105094988A CN 105094988 A CN105094988 A CN 105094988A CN 201510497651 A CN201510497651 A CN 201510497651A CN 105094988 A CN105094988 A CN 105094988A
Authority
CN
China
Prior art keywords
thread
http request
event
executive condition
reading
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
CN201510497651.0A
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.)
Shenzhen Kingdee Middleware Co ltd
Original Assignee
Shenzhen Kingdee Middleware 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 Shenzhen Kingdee Middleware Co ltd filed Critical Shenzhen Kingdee Middleware Co ltd
Priority to CN201510497651.0A priority Critical patent/CN105094988A/zh
Publication of CN105094988A publication Critical patent/CN105094988A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种基于HTTP请求的数据处理方法,包括:接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件,提高了响应时间和响应数量之间的平衡。此外,还提供了一种基于HTTP请求的数据处理装置。

Description

基于HTTP请求的数据处理方法和装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于HTTP请求的数据处理方法和装置。
背景技术
随着计算机技术的发展和用户数量的增多,服务器接收的用户请求也变得日益增多。在单位时间内处理的用户请求数和对用户请求的响应时间为评价服务器的重要指标。提供更快的响应速度和服务更多的请求,有着非常重大的意义。
现有的服务器在HTTP(HyperTextTransferProtocol,超文本传输协议)请求到来后,可采用阻塞式IO(Input/Output,输入输出)处理方式或非阻塞式IO处理。阻塞式IO处理,一个连接一直占用一个线程处理IO直到网络连接关闭。此线程空闲时间不能为其它连接发来的请求服务。非阻塞式IO处理,在读写事件不能执行时会放弃线程,整个处理过程会有大量的线程切换,线程切换时,系统需要恢复线程相关的数据状态,准备线程运行数据,是一个高消耗的动作,造成响应时间的延长。
发明内容
基于此,有必要针对上述技术问题,提供一种基于HTTP请求的数据处理方法和装置,提高响应时间和响应数量之间的平衡。
一种基于HTTP请求的数据处理方法,所述方法包括:
接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;
判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;
在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件。
在其中一个实施例中,所述方法还包括:
将响应完毕的HTTP请求对应的线程返回至线程池。
在其中一个实施例中,所述判断HTTP请求对应的读事件是否具备执行条件的步骤之前,还包括:建立事件驱动线程;
所述判断HTTP请求对应的读事件是否具备执行条件的步骤包括:
所述事件驱动线程接收客户端发送的数据;
当第一HTTP请求对应的数据具备读事件执行条件时,为所述第一HTTP请求分配线程。
在其中一个实施例中,所述网络连接为持久连接或非持久连接。
在其中一个实施例中,通过Servlet引擎接收客户端发送的HTTP请求。
一种基于HTTP请求的数据处理装置,所述装置包括:
连接模块,用于接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;
分配模块,用于判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;
响应模块,用于在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件。
在其中一个实施例中,所述装置还包括:
返回模块,用于将响应完毕的HTTP请求对应的线程返回至线程池。
在其中一个实施例中,所述装置还包括:
建立模块,用于建立事件驱动线程;
所述分配模块还用于所述事件驱动线程接收客户端发送的数据,当第一HTTP请求对应的数据具备读事件执行条件时,为所述第一HTTP请求分配线程。
在其中一个实施例中,所述网络连接为持久连接或非持久连接。
在其中一个实施例中,所述连接模块通过Servlet引擎接收客户端发送的HTTP请求。
上述基于HTTP请求的数据处理方法和装置,通过接收客户端发送的HTTP请求,建立与客户端的网络连接,客户端为一个或多个,判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程,在通过线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待读和/或写事件具备执行条件,继续通过线程响应事件。只有HTTP请求对应的读事件具备执行条件,才会为HTTP请求分配线程,避免分配线程后读事件不能执行使得线程空闲的情况,提高了线程的利用率,使得线程可服务于更多的请求,在读写事件不能执行时继续保持线程,避免线程切换时,系统需要恢复线程相关的数据状态,准备线程运行数据造成的响应时间的延长,加快了响应的速度,提高了响应时间和响应数量之间的平衡。
附图说明
图1为一个实施例中基于HTTP请求的数据处理方法的注程图;
图2为一个实施例中分配线程的流程图;
图3为一个具体的实施例中HTTP请求的数据处理方法的注程图;
图4为一个实施例中基于HTTP请求的数据处理装置的结构框图;
图5为另一个实施例中基于HTTP请求的数据处理装置的结构框图;
图6为再一个实施例中基于HTTP请求的数据处理装置的结构框图。
具体实施方式
在一个实施例中,如图1所示,提供了一种基于HTTP请求的数据处理方法,应用于服务器中,包括以下步骤:
步骤S110,接收客户端发送的HTTP请求,建立与客户端的网络连接,客户端为一个或多个。
具体的,当客户端需要服务器提供服务时,会向服务器发送HTTP请求,HTTP请求是指从客户端到服务器端的请求消息。包括:消息首行中,对资源的请求方法、资源的标识符及使用的协议。http属于Tcp/Ip模型中的应用层协议,当客户端与服务器通信时,服务器先建立与客户端的网络连接。由于服务器可服务于多个客户端,在有多个客户端时,分别与各个客户端建立网络连接。一个客户端可以向服务器发送多个请求。
步骤S120,判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程。
具体的,当客户端传送了数据,服务器需要读取的时候,系统会发出读事件消息,当外部传入的数据已经被硬件处理,软件可以读取,并且传入的数据已经符合HTTP请求需要的数据,则读事件具备执行条件,否则如果数据只接收到部分不符合HTTP请求需要的完整数据或软件还不能读取数据,则为读事件不具备执行条件。由于同一时间服务器可接收到多个HTTP请求,会判断哪些HTTP请求对应的数据满足读事件执行条件,对于满足读事件执行条件的HTTP请求,会为其分配对应的线程。本实施例中,对于读事件具备执行条件时,才会分配线程,而不是在HTTP请求到来时就分配线程,分配线程的先后顺序是按照满足读事件的执行条件来分配,避免分配线程后读事件不能执行使得线程空闲的情况,提高了线程的利用率。
步骤S130,在通过线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待读和/或写事件具备执行条件,继续通过线程响应事件。
具体的,在通过线程响应事件的过程中,如果此时发生读数据不够,和/或者写数据不能完成,系统并不放弃此线程,而是等待读和/或写事件具备执行条件,然后继续通过此线程响应事件。客户端/服务器执行读和/或写事件时,一般是由于网络或者系统处理能力才会导致阻塞,这种阻塞时间往往非常短,如果此时放弃线程会得不偿失,导致处理过程出现大量的线程切换,线程切换时,系统需要恢复线程相关的数据状态,准备线程运行数据,造成响应时间的延长。本实施例在读和/或写事件不具备执行条件时,等待读和/或写事件具备执行条件,避免了大量的线程切换耗时,加快了响应的速度。
本实施例中,通过接收客户端发送的HTTP请求,建立与客户端的网络连接,客户端为一个或多个,判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程,在通过线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待读和/或写事件具备执行条件,继续通过线程响应事件。只有HTTP请求对应的读事件具备执行条件,才会为HTTP请求分配线程,避免分配线程后读事件不能执行使得线程空闲的情况,提高了线程的利用率,使得线程可服务于更多的请求,在读写事件不能执行时继续保持线程,避免线程切换时,系统需要恢复线程相关的数据状态,准备线程运行数据造成的响应时间的延长,加快了响应的速度,提高了响应时间和响应数量之间的平衡。
在一个实施例中,所述方法还包括:将响应完毕的HTTP请求对应的线程返回至线程池。
具体的,一旦HTTP请求响应完毕,它对应的线程就会返回至线程池,供其它请求调用。即使此时采用的是持久连接形式,也会返回线程池。因为此时客户端已经得到响应,客户端发送下一个HTTP请求可能会在一段时间后,将响应完毕的HTTP请求对应的线程不会影响用户的响应体验,而此线程又可以服务其它客户端发送的HTTP请求使得线程不会被一个客户端的连接独占,可服务于更多的客户端,提高了线程的利用率。持久连接是指利用一个连接传输多个HTTP请求与响应。
在一个实施例中,如图2所示,步骤S120之前,还包括:建立事件驱动线程;判断HTTP请求对应的读事件是否具备执行条件的步骤包括:
步骤S121,事件驱动线程接收客户端发送的数据。
步骤S122,当第一HTTP请求对应的数据具备读事件执行条件时,为第一HTTP请求分配线程。
具体的,事件驱动线程在系统初始化的时候建立,用于接收各个客户端发送的数据,并且判断接收到的数据是否使得其中的某个HTTP请求对应的数据具备读事件执行条件,即数据准备就绪。如果第一HTTP请求对应的数据具备读事件执行条件,则为第一HTTP请求分配线程。通过一个独立的线程进行读事件执行条件的判断,并选取满足执行条件的读事件,为对应的HTTP请求分配线程,事件驱动线程在系统中从初始化时就建立并始终存在,使得一有请求到来就可立即处理,提高了线程的分配效率。
在一个实施例中,网络连接为持久连接或非持久连接。
具体的,终端在发送HTTP请求时,可携带网络连接参数,选择建立持久连接或非持久连接,服务器收到HTTP请求,根据网络连接参数建立对应的连接。持久连接是指利用一个连接传输多个HTTP请求与响应。
在一个实施例中,通过Servlet引擎接收客户端发送的HTTP请求。
具体的,Servlet引擎是用Java语言编写的Web服务器引擎,在其上可以部署并开发程序,这种开发方式被Java企业版予以规范,其中页面脚本语言JSP(JavaServerPages,java服务器页面)是其中一种部署方式。Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言,Servlet拥有面向对象Java语言的所有优势,简化了开发人员的操作,使得开发更方便快捷。
在一个具体的实施例中,如图3所示,基于HTTP请求的数据处理方法包括以下步骤:
步骤S210,在系统初始化时建立事件驱动线程。
步骤S220,接收各个客户端发送的HTTP请求,建立与客户端的持久连接,所述客户端为一个或多个。
步骤S230,事件驱动线程接收客户端发送的数据,当第一HTTP请求对应的数据具备读事件执行条件时,为第一HTTP请求分配线程。
步骤S240,线程读取客户端发送的数据,根据读取的数据进行逻辑业务处理。
步骤S250,在进行逻辑业务处理的过程中,如果出现读和/或写事件不具备执行条件,则等待读和/或写事件具备执行条件,继续通过所述线程响应事件。
步骤S260,将响应完毕的HTTP请求对应的线程返回至线程池。
在一个实施例中,如图4所示,提供了一种基于HTTP请求的数据处理装置,包括:
连接模块310,用于接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;
分配模块320,用于判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;
响应模块330,用于在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件。
在一个实施例中,如图5所示,所述装置还包括:
返回模块340,用于将响应完毕的HTTP请求对应的线程返回至线程池。
在一个实施例中,如图6所示,所述装置还包括:建立模块350,用于建立事件驱动线程。分配模块320还用于事件驱动线程接收客户端发送的数据,当第一HTTP请求对应的数据具备读事件执行条件时,为第一HTTP请求分配线程。
在一个实施例中,网络连接为持久连接或非持久连接。
在一个实施例中,连接模块310通过Servlet引擎接收客户端发送的HTTP请求。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于HTTP请求的数据处理方法,所述方法包括:
接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;
判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;
在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将响应完毕的HTTP请求对应的线程返回至线程池。
3.根据权利要求1所述的方法,其特征在于,所述判断HTTP请求对应的读事件是否具备执行条件的步骤之前,还包括:建立事件驱动线程;
所述判断HTTP请求对应的读事件是否具备执行条件的步骤包括:
所述事件驱动线程接收客户端发送的数据;
当第一HTTP请求对应的数据具备读事件执行条件时,为所述第一HTTP请求分配线程。
4.根据权利要求1所述的方法,其特征在于,所述网络连接为持久连接或非持久连接。
5.根据权利要求1所述的方法,其特征在于,通过Servlet引擎接收客户端发送的HTTP请求。
6.一种基于HTTP请求的数据处理装置,其特征在于,所述装置包括:
连接模块,用于接收客户端发送的HTTP请求,建立与所述客户端的网络连接,所述客户端为一个或多个;
分配模块,用于判断HTTP请求对应的读事件是否具备执行条件,如果具备,则为具备读事件执行条件的HTTP请求分配线程;
响应模块,用于在通过所述线程响应事件的过程中,当读和/或写事件不具备执行条件时,等待所述读和/或写事件具备执行条件,继续通过所述线程响应事件。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
返回模块,用于将响应完毕的HTTP请求对应的线程返回至线程池。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
建立模块,用于建立事件驱动线程;
所述分配模块还用于所述事件驱动线程接收客户端发送的数据,当第一HTTP请求对应的数据具备读事件执行条件时,为所述第一HTTP请求分配线程。
9.根据权利要求6所述的装置,其特征在于,所述网络连接为持久连接或非持久连接。
10.根据权利要求6所述的装置,其特征在于,所述连接模块通过Servlet引擎接收客户端发送的HTTP请求。
CN201510497651.0A 2015-08-13 2015-08-13 基于http请求的数据处理方法和装置 Pending CN105094988A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510497651.0A CN105094988A (zh) 2015-08-13 2015-08-13 基于http请求的数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510497651.0A CN105094988A (zh) 2015-08-13 2015-08-13 基于http请求的数据处理方法和装置

Publications (1)

Publication Number Publication Date
CN105094988A true CN105094988A (zh) 2015-11-25

Family

ID=54575494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510497651.0A Pending CN105094988A (zh) 2015-08-13 2015-08-13 基于http请求的数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN105094988A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060168139A1 (en) * 2001-10-05 2006-07-27 Bea Systems, Inc. System for integrating java servlets with asynchronous message
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101334742A (zh) * 2008-08-05 2008-12-31 中国科学院软件研究所 一种Java EE应用服务器并发处理方法
CN102323894A (zh) * 2011-09-08 2012-01-18 上海普元信息技术股份有限公司 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN103164256A (zh) * 2011-12-08 2013-06-19 深圳市快播科技有限公司 一种实现单机支持高并发处理方法及系统
CN103873474A (zh) * 2014-03-27 2014-06-18 西安航天动力试验技术研究所 基于Windows的TCP/IP协议的网络传输方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060168139A1 (en) * 2001-10-05 2006-07-27 Bea Systems, Inc. System for integrating java servlets with asynchronous message
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101334742A (zh) * 2008-08-05 2008-12-31 中国科学院软件研究所 一种Java EE应用服务器并发处理方法
CN102323894A (zh) * 2011-09-08 2012-01-18 上海普元信息技术股份有限公司 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN103164256A (zh) * 2011-12-08 2013-06-19 深圳市快播科技有限公司 一种实现单机支持高并发处理方法及系统
CN103873474A (zh) * 2014-03-27 2014-06-18 西安航天动力试验技术研究所 基于Windows的TCP/IP协议的网络传输方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DAVIDWANG456: "Nginx详解-服务器集群", 《HTTPS://WEB.ARCHIVE.ORG/WEB/20150510200358/HTTP://WWW.JAVAWEB1024.COM/SERVER/2015/05/08/654.HTML》 *

Similar Documents

Publication Publication Date Title
CN111131058B (zh) 访问量控制方法和装置
CN110278256B (zh) 区块链节点接入上链方法、相关设备及系统
CN110134534B (zh) 基于nio针对大数据分布式系统进行消息处理优化的系统及方法
CN110633442A (zh) 一种推送方法、装置及电子设备
EP2838243B1 (en) Capability aggregation and exposure method and system
CN113422842B (zh) 一种考虑网络负载的分布式电力用电信息数据采集系统
CN111666745A (zh) 一种文件下载方法、装置、服务器及介质
CN110968439A (zh) 系统间的消息通知方法、装置、服务器、系统及存储介质
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
CN101635744A (zh) 一种数据传输方法及数据传输系统以及相关设备
CN108259595A (zh) 一种服务间异步调用的方法及系统
CN108718335A (zh) 一种负载均衡方法、装置、Web服务器及存储介质
CN113472687B (zh) 一种数据处理方法和装置
JP4516594B2 (ja) メッセージ送信制御方法、メッセージ送信制御装置、及びメッセージ送信制御プログラム
CN109308219B (zh) 任务处理方法、装置及分布式计算机系统
CN114979250B (zh) 消息推送方法、装置和设备
CN113596105B (zh) 内容的获取方法、边缘节点及计算机可读存储介质
CN105094988A (zh) 基于http请求的数据处理方法和装置
CN103533001A (zh) 基于http多重代理的通信方法和系统、中间代理服务器
CN105827695B (zh) 一种带宽资源共享方法及装置
CN112910763B (zh) 一种提供实时数据接口服务的方法、装置、设备及介质
CN110865895B (zh) 访问流量控制方法、装置、电子设备及存储介质
CN112202914B (zh) 一种消息推送方法及装置
CN112306791B (zh) 一种性能监控的方法和装置
CN111858184A (zh) 一种容灾系统、容灾方法、存储介质和计算设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: South South technology twelve road 518000 in Guangdong province Shenzhen City Guangdong streets Nanshan District high tech Industrial Park, No. 2, Kingdee Software Park building A floor 2 South Block

Applicant after: Shenzhen Kingdee middleware Limited by Share Ltd.

Address before: 518057 Guangdong City, Nanshan District province high tech Zone in the middle of the industrial zone of the sparrow tower M-6 building, floor 1, area 3, second, 4

Applicant before: Shenzhen Kingdee Middleware Co., Ltd.

COR Change of bibliographic data
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20151125