CN103780679B - 基于http协议的长延时远程调用方法 - Google Patents

基于http协议的长延时远程调用方法 Download PDF

Info

Publication number
CN103780679B
CN103780679B CN201410003112.2A CN201410003112A CN103780679B CN 103780679 B CN103780679 B CN 103780679B CN 201410003112 A CN201410003112 A CN 201410003112A CN 103780679 B CN103780679 B CN 103780679B
Authority
CN
China
Prior art keywords
request
time
server
client
http
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.)
Expired - Fee Related
Application number
CN201410003112.2A
Other languages
English (en)
Other versions
CN103780679A (zh
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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201410003112.2A priority Critical patent/CN103780679B/zh
Publication of CN103780679A publication Critical patent/CN103780679A/zh
Application granted granted Critical
Publication of CN103780679B publication Critical patent/CN103780679B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于HTTP协议的长延时远程调用方法,具体通过在服务器端维护一个请求缓存池和一个业务处理时间表对每个相同的耗时请求进行管理,按照资源映射的管理方式,使得每个耗时的请求能够在连接超时的情况下对二次请求进行基于HTTP的接续处理。本发明的方法既修正了耗时处理使用短连接易超时的缺点,又克服长连接占用资源量大的不足,具有效率高、开销小、资源占用少的优点,能够适用于互联网,特别是移动互联网的网络架构。

Description

基于HTTP协议的长延时远程调用方法
技术领域
本发明属于联网通信技术领域,具体涉及实现基于HTTP请求的接续处理和支持消息排队的长延时远程调用方法。
背景技术
Web技术使用HTTP协议,本地浏览器可以通过HTTP协议与Web服务器交换信息。HTTP协议不但可以使浏览器更加高效,使网络传输减少,保证计算机正确快速地传输超文本文档,还可以确定传输文档中的哪一部分,以及哪部分内容首先显示。
在TCP/IP协议栈中当中,HTTP协议通常承载于TCP协议之上,如图1所示,HTTP是一个是无状态的应用层协议,浏览器和服务器每进行一次HTTP操作,就要建立一次链接,当HTTP操作完成时随即又断开此次连接,这种处理机制也叫做短连接机制。一次HTTP操作称为一个事务(Transaction),HTTP采用TCP/IP链接,而且该连接仅在此次事务中保持,无论是浏览器还是服务器都不会记忆当前事务之前的链接状态。如果用户要继续请求服务器的内容,就需要再次建立新的链接。一般的C/S模型大多都采用这种短连接的机制,使得服务器可以响应其他更多客户端的请求,从而提高服务器的工作效率。
但是当客户端浏览器的请求需要服务器端进行比较耗时的操作时,短连接的机制很可能会出现如下的问题:客户端向服务器发送请求,二者之间建立了短连接,客户端等待服务器响应,但是服务器端的耗时操作尚未完成,短链接却因为超时已经断开了链接,客户端未收到任何响应,然后再次发起相同的请求,而第二次请求的结果可能又和前面一次一样,最终的结果是浪费了大量的链路资源和服务器资源,但是客户端并未得到任何服务结果,反而花费了大量的等待时间。
一般来讲,Web网站拥有成千上万甚至上亿个客户端的连接,为了节省资源一般都采用短连接机制。但考虑到上面提到的问题,现有的技术中长连接的方式可以作为一种解决方案,所谓长连接,就是在客户端和服务器之间建立一条链接,并且保持该链接一直存在,虽然长连接解决了服务器响应时间长的问题,但是也存在不少的问题,比如当客户端数量巨大时,大量的长链接使用了大量的链路资源,而每条链路并没有实时的传输数据,而仅仅是在等待服务器响应,大量资源被浪费。
发明内容
本发明的目的是为了克服短连接和长连接的固有缺点,针对现有技术中Web服务器处理时间较长导致的一些问题,比如单次请求服务质量较差、重复请求浪费链路资源等,在短连接机制的基础上提出了基于HTTP协议的长延时远程调用方法。
本发明的技术方案是:一种基于HTTP协议的长延时远程调用方法,具体包括如下步骤:
步骤1.服务器端维持一个请求缓存池和业务处理时间映射表,所述请求缓存池用于将每一个请求及与其对应的状态信息形成映射,从而在请求缓存池中根据映射关系找到该请求对应的各种处理状态;所述业务处理时间映射表用于存储请求的每一种业务所对应的处理时间Tb
步骤2.对于每一个新到达的HTTP请求,提取出该请求的特征信息,所述特征信息按照一定的规则形成唯一标识关键字Key,然后根据所述唯一关键字调用散列函数,形成唯一标识的索引Nindex
服务器查询请求缓存池,判断此请求索引是否已经存在,如果存在且结果所在位置为-1,说明在本次请求之前有过相同的请求但未处理完成,则中继服务器根据业务处理时间Tb和起始处理时间戳T0,向客户端发送一条包含Continue标识的接续消息,用于通知客户端在预测时间Tr之后再次发起请求;如果索引存在且结果所在位置不为-1,说明在本次请求之前有过相同的请求且处理完成,则服务器直接返回请求缓存池中该请求对应的处理结果,然后断开连接;否则,根据Nindex构建固定格式的请求报文放入请求缓冲池中,等待服务器对缓存池的请求进行处理;
步骤3:如果当前请求的业务所需处理时间Tb小于或等于链接的保持时间,则处理完该请求后服务器将服务结果以HTTP的形式传回给客户端,并清空请求缓冲池中该请求对应的资源映射条目,一次请求响应过程结束;否则,当前请求的业务所需时间Tb大于链接的保持时间,这种情况将发生连接超时,在连接断开之前,服务器向客户端发送一条包含Continue标识的接续消息,用于告知客户端在预测时间Tr之后再次发起请求;服务器对于超时未完成的请求并不放弃处理,而是继续完成整个处理流程,并将处理结果存储下来,同时更新请求缓存池中该请求的资源映射情况,重置并启用定时器;当定时器计时到达之前,如果服务器再次收到相同的请求,则将直接读取已完成的处理结果返回给客户端,实现HTTP请求的长延时远程调用;
步骤4.当客户端收到服务器接续消息之后,读取消息体中的预测请求时间Tr,启动本地定时器并设置时间为Tr,在定时时刻到达时自动重新发送请求。
进一步的,步骤2所述的特征信息包括源IP地址、端口号、请求类型和请求参数。
进一步的,步骤2所述的一定的规则具体为字符串形成规则。
需要说明的是:
步骤2所述的一定的Key生成规则在本质上具体唯一确定性,即对于相同的请求总是会生成相同且唯一的Key。本实施例中使用字符串形成规则,实际应用中可以根据业务需求进行自由选择,但本质上都具有唯一确定性;
步骤2采用先生成Key,再由Key生成Nindex的方案,是因为于Key长度可能较大,而经过散列函数后生成的Nindex比较短而且长度位数固定,便于检索和处理,实际应用中可以只生成Key,用Key作为缓冲池的索引进行后续处理;
步骤3所述带有Continue标识的接续消息以及Tr等,在本质上强调服务器对于超时业务的接续处理机制;
步骤4所述客户端的相应操作是客户端对服务器发来的接续消息的响应,具体操作应该依应用需求而定,但本质上都属于接续消息的后续响应的处理。
本发明的有益效果:本发明基于HTTP协议的长延时远程调用方法在短链接机制的基础上进行改进,达到节省资源并提高服务质量的目的,具体通过在服务器端维护一个请求缓存池和一个业务处理时间表对每个相同的耗时请求进行管理,按照资源映射的管理方式,使得每个耗时的请求能够在连接超时的情况下对二次请求进行基于HTTP的接续处理。本发明的方法既修正了耗时处理使用短连接易超时的缺点,又克服长连接占用资源量大的不足,具有效率高、开销小、资源占用少的优点,能够适用于互联网,特别是移动互联网的网络架构。
附图说明
图1为现有的HTTP协议示意图。
图2为本发明实施例的移动互联网中服务器构架示意图。
图3为本发明实施例的长延时调用系统示意图。
图4为本发明实施例的长延时远程调用方法的交互流程示意图。
图5为本发明实施例的另一种长延时调用系统示意图。
具体实施方式
下面结合附图和具体的实施例对本发明作进一步的阐述。
本发明实施例设定环境为当前移动互联网中应用较广泛的服务器构架方式,如图2所示。客户端一般是智能手机终端,也包括少量的PC端,构成了请求的生成和发送者;最右侧是内容服务器,是数据和服务的提供者,这里为了避免客户端直接访问内容服务器引起的一系列问题,一般会在中间添加一个节点,这个节点就是中继服务器,也称为移动服务器,用于处理客户端发送的请求,进行相关的鉴权、管理、查询、转发、信息组织等功能,是左侧客户端和右侧内容服务器之间的纽带,本发明实施例主要应用于该节点。
本发明的技术方案主要基于如下构思:客户端第一次请求耗时业务时,在缓冲池中添加请求报文,中继服务器处理完了就把结果存缓存然后定个时间,此后把结果返回给客户端;如果预定时间之内再有相同请求,中继服务器直接就返回结果,省去处理过程;到了预定时间后,缓存到期,缓存池删掉业务请求报文,如果之后再来这个请求,需要重新处理,即重复之前的过程(去缓存池找—构建报文—处理—缓储到中继服务器—启动缓存定时器)。
本发明实施例的长延时调用系统示意图如图3所示,在本实施例中,中继服务器和内容服务器是分开的两个服务器,本领域的技术人员应该意识到,这里的中继服务器和内容服务器也是可以合二为一的。
基于该系统的长延时远程调用方法具体交互流程如图4所示,具体处理过程如下:
第一步:客户端想要查看某区域的网络设备排名信息,首次向中继服务器发起请求:
http://42.121.34.220:8080/ztenms/topRegionQoe.action?timerange=5&mode=0
第二步:中继服务器中维护了一个请求缓存池和一个业务处理时间表,请求缓存池用于维护请求资源映射,而业务处理时间映射表通过学习的方式动态更新;当中继服务器收到该请求后,这里采用简单的字符串生成Key,即该请求的Key=topRegionQoe&timerange=5&mode=0,散列函数使用16位MD5算法,
Nindex=MD5(Key)=05406f96b729290c
由于是这个业务的首次请求,所以查询请求缓存池,并不存在该索引,于是构建固定格式的请求报文,存放入请求缓存池中。
请求报文包括如下几个字段:唯一标识的索引Nindex、业务处理时间Tb(s)、处理起始时间戳T0、处理结果所在位置P、缓存定时器Timer。关于请求报文的构建在具体实施中各个实施方案可以根据实际情况进行构建,对于本领域技术人员来说是显而易见的,在此不再详细展开说明。
本实施例中Nindex为05406f96b729290c;Tb由查询中继服务器所维护的业务处理时间表所得,本实施例中为120秒;T0表示开始处理请求的时间戳,本实施例中为1384243071039;P域和Timer域分别置-1和NULL,表示初次建立请求报文,尚无结果和缓存定时,资源映射的关系如表1所示。
表1
Nindex TbT0 P Timer
……
05406f96b729290c 1201384243071039 -1 NULL
……
如果HTTP建立连接时双方协商的链接保持时间大于120s,则中继服务器向内容服务器转发该请求,大概120s之后收到内容服务器返回的处理结果,然后中继服务器将结果返回给客户端,连接断开,删除请求缓存池中的相应报文条目,一次请求响应过程结束;如果HTTP链接的保持时间小于120s,比如本例中假设为30s,则在内容服务器处理完结果之前,客户端与中继服务器的链接将要超时断开,中继服务器需要在断开之前,向客户端返回一条接续消息,消息体为:Continue:90,即预测时间Tr=90s,表示客户端在90s之后可重新发送请求,到时可以得到请求结果,同时内容服务器并不中断处理,而是继续处理,完成后将结果返回给中继服务器,中继服务器在收到结果后存储在本地,记录结果的储存位置,并启动缓存定时器。请求缓存池中该请求的某些域值发生改变,如表2所示:
表2
Nindex Tb T0 P Timer
05406f96b729290c 120 1384243071039 0X024FC908 Timer1
第三步:客户端的请求超时之前收到了中继服务器的接续消息,消息体中有Tr=90s的重新发起请求的预测时间,则客户端相应的给用户提示,并启动定时器,在定时到达的时候再次发送相同的请求:
http://42.121.34.220:8080/ztenms/topRegionQoe.action?timerange=5&mode=0。
第四步:中继服务器第二次收到该请求,先对该请求提取关键信息形成关键字Key=topRegionQoe&timerange=5&mode=0,散列函数使用16位MD5算法,
Nindex=MD5(Key)=05406f96b729290c
使用这个索引号Nindex去查询请求缓存池,发现存在相同的请求报文,则不再添加本次请求的新的请求报文,而是将该条目下指示的位置取得处理结果,直接返回给客户端,从而实现了HTTP对耗时服务的接续处理。
第五步:倘若该环境中存在第两个客户端,将前面提到的客户端命名为Terminal1,第二个客户端为Terminal2。当Terminal1请求超时,链接断开之后的20s时Terminal2发送同一个请求,此时由于该请求之前已经被加入到请求缓存池中但服务器尚未处理完该请求,则将收到中继服务器发来的接续消息,消息体中包括Continue:70,则Terminal2可以在大约70s后再次发起请求即可得到需要的服务结果,从而实现了HTTP长延时的远程调用。
第六步:当请求
http://42.121.34.220:8080/ztenms/topRegionQoe.action?timerange=5&mode=0
在请求缓存池中对应的缓存定时器Timer1时间到达时,则删除该请求报文条目,实现了请求缓存池的动态更新。
本发明的方法涉及到的HTTP远程调用机制要求客户端对于接续消息能够识别并作出响应,对于移动客户端或者PC浏览器客户端,需要增加“Continue”字段的识别机制从而才能对该接续消息进行相应,此外本发明的方法并不会破坏程序的运行逻辑而导致程序的崩溃,与现有的HTTP协议存在兼容性。
另外需要强调说明的是,上述实施方式中移动互联网的客户端-中继服务器-内容服务器的服务器构架仅仅是本发明内容的具体的一种应用场景,实际上本发明并不仅限于这一种特定的场景,而是普遍适应的。比如对于客户端-内容服务器(如图5的结构形式),客户端-中继服务器-中继服务器-内容服务器等都能够正常工作并且是非常适用的。

Claims (2)

1.一种基于HTTP协议的长延时远程调用方法,具体包括如下步骤:
步骤1.服务器端维持一个请求缓存池和业务处理时间映射表,所述请求缓存池用于将每一个请求及与其对应的状态信息形成映射,从而在请求缓存池中根据映射关系找到该请求对应的各种处理状态;所述业务处理时间映射表用于存储请求的每一种业务所对应的处理时间Tb
步骤2.对于每一个新到达的HTTP请求,提取出该请求的特征信息,所述特征信息按照一定的规则形成唯一标识关键字Key,然后根据所述唯一关键字调用散列函数,形成唯一标识的索引Nindex,所述的一定的规则具体为字符串形成规则;
服务器查询请求缓存池,判断此请求索引是否已经存在,如果存在且结果所在位置为-1,说明在本次请求之前有过相同的请求但未处理完成,则中继服务器根据业务处理时间Tb和起始处理时间戳T0,向客户端发送一条包含Continue标识的接续消息,用于通知客户端在预测时间Tr之后再次发起请求;如果索引存在且结果所在位置不为-1,说明在本次请求之前有过相同的请求且处理完成,则服务器直接返回请求缓存池中该请求对应的处理结果,然后断开连接;否则,根据Nindex构建固定格式的请求报文放入请求缓冲池中,等待服务器对缓存池的请求进行处理;
步骤3:如果当前请求的业务所需处理时间Tb小于或等于链接的保持时间,则处理完该请求后服务器将服务结果以HTTP的形式传回给客户端,并清空请求缓冲池中该请求对应的资源映射条目,一次请求响应过程结束;否则,当前请求的业务所需时间Tb大于链接的保持时间,这种情况将发生连接超时,在连接断开之前,服务器向客户端发送一条包含Continue标识的接续消息,用于告知客户端在预测时间Tr之后再次发起请求;服务器对于超时未完成的请求并不放弃处理,而是继续完成整个处理流程,并将处理结果存储下来,同时更新请求缓存池中该请求的资源映射情况,重置并启用定时器;当定时器计时到达之前,如果服务器再次收到相同的请求,则将直接读取已完成的处理结果返回给客户端,实现HTTP请求的长延时远程调用;
步骤4.当客户端收到服务器接续消息之后,读取消息体中的预测时间Tr,启动本地定时器并设置时间为Tr,在定时时刻到达时自动重新发送请求。
2.根据权利要求1所述的基于HTTP协议的长延时远程调用方法,其特征在于,步骤2所述的特征信息包括源IP地址、端口号、请求类型和请求参数。
CN201410003112.2A 2014-01-03 2014-01-03 基于http协议的长延时远程调用方法 Expired - Fee Related CN103780679B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410003112.2A CN103780679B (zh) 2014-01-03 2014-01-03 基于http协议的长延时远程调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410003112.2A CN103780679B (zh) 2014-01-03 2014-01-03 基于http协议的长延时远程调用方法

Publications (2)

Publication Number Publication Date
CN103780679A CN103780679A (zh) 2014-05-07
CN103780679B true CN103780679B (zh) 2016-10-19

Family

ID=50572494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410003112.2A Expired - Fee Related CN103780679B (zh) 2014-01-03 2014-01-03 基于http协议的长延时远程调用方法

Country Status (1)

Country Link
CN (1) CN103780679B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105007281A (zh) * 2015-08-10 2015-10-28 武汉中元华电软件有限公司 一种基于时间预测的网络同步报文md5加密装置及加密方法
CN106657187A (zh) * 2015-10-30 2017-05-10 南京中兴新软件有限责任公司 报文处理的方法及装置
CN105450730A (zh) * 2015-11-05 2016-03-30 北京奇虎科技有限公司 一种处理客户端请求的方法和装置
CN107529229B (zh) * 2016-06-21 2021-08-31 中兴通讯股份有限公司 数据传输的方法,装置及系统
CN106899652B (zh) * 2016-07-20 2020-08-21 阿里巴巴集团控股有限公司 一种推送业务处理结果的方法及装置
CN107038025B (zh) * 2016-09-28 2020-04-07 阿里巴巴集团控股有限公司 基于soa架构的系统调用方法及装置
CN107181787B (zh) * 2017-03-21 2020-07-17 阿里巴巴集团控股有限公司 一种请求处理方法及装置
CN106936921A (zh) * 2017-04-06 2017-07-07 福建新大陆软件工程有限公司 一种网络请求缓冲处理方法及系统
CN110020248A (zh) * 2017-12-26 2019-07-16 航天信息股份有限公司 一种基于react-native请求超时的处理方法及装置
CN107979653B (zh) * 2018-01-16 2021-02-09 北京小米移动软件有限公司 负载均衡方法及装置
CN110505257A (zh) * 2018-05-17 2019-11-26 北京国双科技有限公司 请求消息处理方法及装置
CN108833588B (zh) * 2018-07-09 2021-10-12 北京华沁智联科技有限公司 会话处理方法及装置
CN111225010A (zh) * 2018-11-27 2020-06-02 北京京东尚科信息技术有限公司 数据处理方法、数据处理系统以及装置
CN109922127A (zh) * 2019-01-08 2019-06-21 博拉网络股份有限公司 一种云计算服务方法、装置和存储介质
CN110489694A (zh) * 2019-07-30 2019-11-22 阿里巴巴集团控股有限公司 用于处理高并发请求的方法和系统
CN112887344B (zh) * 2019-11-29 2023-04-07 中盈优创资讯科技有限公司 基于onos控制器集群的链路确定方法及装置
CN112311562B (zh) * 2020-10-29 2023-02-28 平安科技(深圳)有限公司 请求响应方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1622310B1 (en) * 2004-07-27 2007-09-12 Lucent Technologies Inc. Administration method and system for network management systems
CN101610282A (zh) * 2009-07-16 2009-12-23 浪潮电子信息产业股份有限公司 一种基于http协议的存储多节点集中管理和单节点管理相结合的方法
CN101645032A (zh) * 2009-08-31 2010-02-10 金蝶软件(中国)有限公司 应用服务器的性能分析方法和应用服务器
CN102098296A (zh) * 2010-12-29 2011-06-15 北京新媒传信科技有限公司 一种实现远程调用的方法和系统
CN103391294A (zh) * 2013-07-24 2013-11-13 佳都新太科技股份有限公司 一种基于服务描述的远程方法调用

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1622310B1 (en) * 2004-07-27 2007-09-12 Lucent Technologies Inc. Administration method and system for network management systems
CN101610282A (zh) * 2009-07-16 2009-12-23 浪潮电子信息产业股份有限公司 一种基于http协议的存储多节点集中管理和单节点管理相结合的方法
CN101645032A (zh) * 2009-08-31 2010-02-10 金蝶软件(中国)有限公司 应用服务器的性能分析方法和应用服务器
CN102098296A (zh) * 2010-12-29 2011-06-15 北京新媒传信科技有限公司 一种实现远程调用的方法和系统
CN103391294A (zh) * 2013-07-24 2013-11-13 佳都新太科技股份有限公司 一种基于服务描述的远程方法调用

Also Published As

Publication number Publication date
CN103780679A (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
CN103780679B (zh) 基于http协议的长延时远程调用方法
CN105812351B (zh) 实现会话共享的方法和系统
US8321503B2 (en) Context-specific network resource addressing model for distributed services
US8892768B2 (en) Load balancing apparatus and load balancing method
CN104125208B (zh) 数据传输方法及装置
CN111193773B (zh) 负载均衡方法、装置、设备及存储介质
CN101924785A (zh) 数据的上传方法、下载方法和系统
US10579595B2 (en) Method and device for calling a distributed file system
CN109462631B (zh) 数据处理方法、装置、存储介质及电子装置
CN105868231A (zh) 缓存数据的更新方法及装置
CN111338806B (zh) 一种业务控制方法及装置
CN104601702B (zh) 集群远程过程调用方法及系统
WO2015062228A1 (zh) 一种访问共享内存的方法和装置
CN102333130A (zh) 一种访问缓存服务器的方法、系统及缓存智能调度器
CN109067936B (zh) 一种域名解析的方法及装置
TW201724825A (zh) 全域資訊獲取、處理及更新、方法、裝置和系統
TW201724001A (zh) 全域資訊獲取、處理及更新方法、裝置和系統
CN104768079A (zh) 多媒体资源分发方法、装置及系统
US20150006622A1 (en) Web contents transmission method and apparatus
EP3576371A1 (en) Method and system for transmitting streaming media resource
CN104519088A (zh) 一种缓存系统的实现方法及缓存系统
CN101247370B (zh) 消息呈现业务的实现方法和系统
CN103685485A (zh) 移动终端VoIP通讯音频管理系统
CN110719307A (zh) 数据传输方法、客户端、服务端及计算机可读存储介质
WO2019242279A1 (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161019

Termination date: 20190103

CF01 Termination of patent right due to non-payment of annual fee