CN103747097B - 移动终端http请求聚合压缩的系统及方法 - Google Patents
移动终端http请求聚合压缩的系统及方法 Download PDFInfo
- Publication number
- CN103747097B CN103747097B CN201410028872.9A CN201410028872A CN103747097B CN 103747097 B CN103747097 B CN 103747097B CN 201410028872 A CN201410028872 A CN 201410028872A CN 103747097 B CN103747097 B CN 103747097B
- Authority
- CN
- China
- Prior art keywords
- request
- aggregation
- response
- http
- module
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000002776 aggregation Effects 0.000 claims abstract description 155
- 238000004220 aggregation Methods 0.000 claims abstract description 155
- 238000004891 communication Methods 0.000 claims abstract description 35
- 230000004044 response Effects 0.000 claims description 140
- 238000013507 mapping Methods 0.000 claims description 86
- 238000007906 compression Methods 0.000 claims description 73
- 230000006835 compression Effects 0.000 claims description 73
- 238000013144 data compression Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 13
- 230000004931 aggregating effect Effects 0.000 claims description 11
- 238000006116 polymerization reaction Methods 0.000 claims description 5
- 235000007164 Oryza sativa Nutrition 0.000 claims description 4
- 235000009566 rice Nutrition 0.000 claims description 4
- 240000007594 Oryza sativa Species 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 7
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 abstract description 2
- 241000209094 Oryza Species 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种移动终端http请求聚合压缩的系统及方法,属于计算机网络通信技术领域,包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块。本发明的有益效果如下:本发明在代理服务器处实现了HTTP请求的聚合压缩,能达到使代理服务器与后台服务器间只进行一次套接字通信就能处理多个移动终端的HTTP请求。对于那些代理服务器与后台服务器间通信套接字数量有限,且有大量终端请求并发的场合,本发明可以利用少量套接字处理大量移动终端HTTP请求,能显著减小代理服务器与后台服务器间的通信数据量,降低服务器对终端请求的响应延迟。
Description
技术领域
本发明涉及计算机网络通信技术领域,尤其涉及一种移动终端HTTP请求聚合压缩的系统及方法。
背景技术
随着移动通信技术的迅猛发展,移动终端得到了广泛的普及。越来越多的业务从PC(Personal computer,个人电脑)转移到了移动终端,移动终端与后台服务器的通信多采用HTTP(Hyper Text Transfer Protocol,超文本传输协议)请求的方式实现。许多业务可能针对PC端已有比较成熟的后台服务器端,若针对移动终端再去设计相应的服务器显然代价太大,为充分利用已有的后台服务器,通常使用代理服务器的方式实现:移动终端发送HTTP请求到代理服务器,代理服务器解析、处理移动终端HTTP请求,并通过套接字(socket)与后台服务器进行交互,最后再由代理服务器将响应结果封装并返回移动终端。
HTTP请求的URL(Uniform Resource Locator,统一资源定位符)解析后格式如下所示:
<request-line>
<headers>
<blank line>
[<request-body>]
在HTTP请求中,第一行必须是一个请求行(request-line),用来说明请求的方式(通常为HTTP GET或HTTP POST)、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行(blank line),再此之后可以添加任意的其他数据,即请求主体(request-body)。
对于一个HTTP GET请求:
www.abcd.com:8080/project/search?name1=value1&name2=value2;
其对应的请求行<request-line>是:
GET/project/search?name1=value1&name2=value2HTTP/1.1;
对于一个HTTP POST请求:
www.abcd.com:8080/project/search;
其对应的请求行<request-line>是:GET/project/search HTTP/1.1;
对应的请求主体<request-body>是:name1=value1&name2=value2;
以上HTTP请求的请求路径(request-path)均是:/project/search;
请求参数是:name1=value1&name2=value2。
当代理服务器与后台服务器采用套接字方式进行交互,若套接字一次只转发一个移动终端的HTTP请求,则当大量终端请求到来时,必然会导致后续的HTTP请求无法得到及时的响应,造成不良的终端用户体验。
JSON:JavaScript Object Notation,JavaScript对象表示法。
发明内容
本发明的目的在于解决HTTP请求无法得到及时的响应,造成不良的终端用户体验而提出的一种移动终端HTTP请求聚合压缩的系统及方法。
为了实现以上发明目的,本发明采取的技术方案如下:一种移动终端HTTP请求聚合压缩的系统,包括包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块;
其中,
Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应;
HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式;
数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩;
套接字通信模块用于处理代理服务器与后台服务器间的通信。
作为优选:Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
作为优选:HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数。
作为优选:数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
为解决以上问题,本发明还公开了一种方法,包括以下步骤:
S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;Servlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行S3;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求;
S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签;
S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器;
S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器;
S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端;
S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
作为优选:所述S3的聚合方法如下:
S31:为聚合请求创建一个空的JSON数组;
S32:新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
S321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值;
S322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值;
S323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;
S324:将该请求映射对象作为一个元素添加到聚合请求数组;
S325:循环执行S32,直到处理完所有待处理的HTTP请求。
作为优选:所述S6具体处理方式如下:
S61:为聚合响应创建一个空的JSON数组;
S62:新创建一个响应映射对象,对收到的请求映射对象做如下处理:
S621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对;
S622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象;
S623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象;
S63:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩;
S64:后台服务器将聚合响应通过套接字传回给代理服务器。
作为优选:S322所述对应的操作为人机语言MML命令:SHOW_USER_INFO。
作为优选:S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
作为优选:S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
本发明的有益效果:本发明在代理服务器处实现了HTTP请求的聚合压缩,能达到使代理服务器与后台服务器间只进行一次套接字通信就能处理多个移动终端的HTTP请求。对于那些代理服务器与后台服务器间通信套接字数量有限,且有大量终端请求并发的场合,本发明可以利用少量套接字处理大量移动终端HTTP请求,能显著减小代理服务器与后台服务器间的通信数据量,降低服务器对终端请求的响应延迟。
附图说明
图1本发明所采用的整体框架示意图;
图2本发明方法流程示意图;
图3 HTTP请求聚合方法示意图;
图4两个套接字并发时HTTP请求聚合方法示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
一种移动终端HTTP请求聚合压缩的系统,包括包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块;
其中,
Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应;
HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式;
数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩;
套接字通信模块用于处理代理服务器与后台服务器间的通信。
Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数。
数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
为解决以上问题,本发明还公开了一种方法,包括以下步骤:
S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;Servlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行S3;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求;
S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签;
S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器;
S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器;
S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端;
S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
所述S3的聚合方法如下:
S31:为聚合请求创建一个空的JSON数组;
S32:新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
S321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值;
S322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值;
S323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;
S324:将该请求映射对象作为一个元素添加到聚合请求数组;
S325:循环执行S32,直到处理完所有待处理的HTTP请求。
所述S6具体处理方式如下:
S61:为聚合响应创建一个空的JSON数组;
S62:新创建一个响应映射对象,对收到的请求映射对象做如下处理:
S621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对;
S622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象;
S623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象;
S63:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩;
S64:后台服务器将聚合响应通过套接字传回给代理服务器。
S322所述对应的操作为人机语言MML命令:SHOW_USER_INFO。
S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
本发明所公开方法主要由四个模块构成:Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块。
Servlet模块:Servlet的主要功能是接收从移动终端发送过来的HTTP请求,并返回HTTP响应,具体而言就是从请求对象获得客户端数据并向响应对象创建输出。
HTTP请求聚合模块:包括原始请求队列,聚合请求,聚合响应数组;原始请求队列:存放各移动终端的HTTP请求;聚合请求:将多个移动终端HTTP请求聚合后的请求,其格式为JSON数组格式;聚合响应数组:后台服务器对聚合请求的响应结果,其格式为JSON数组格式。
数据压缩模块:判断聚合请求或聚合响应是否超过限定大小,若超过则对其进行压缩。
套接字通信模块:该模块负责代理服务器与后台服务器间的通信,使用原始套接字实现即两台主机之间进行网络通信、传输数据的方式。
具体实施例一:
本发明所提出方法实施步骤如下,运行流程如图2所示:
1.启动时,代理服务器初始化HTTP请求聚合模块,套接字通信模块。Servlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
2.HTTP请求聚合模块检查原始请求队列是否为空:若为空,则经过TIMEOUT(一个预设的超时时间)后继续执行步骤2;若不为空,则记录下本次待处理HTTP请求个数为MAXNUM(一次性最多聚合的HTTP请求个数)或队列元素个数(当原始请求队列长度小于MAXNUM)。
3.从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求。具体的聚合方法见图3,描述如下:
a)初始化:为聚合请求创建一个空的JSON数组。
b)新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
i.获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值。
ii.将该HTTP请求的请求路径解析成对应的操作(后台服务器能理解并执行该操作,该操作的定义由代理服务器与后台服务器协商决定,如MML(Man-Machine Language人机语言)命令:SHOW_USER_INFO),将该操作作为请求映射对象中Action键的值。
iii.若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对。
若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对。
iv.将该请求映射对象作为一个元素添加到聚合请求数组。
v.继续执行步骤b),直到处理完所有待处理HTTP请求。
4.压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法(例如Huffman压缩算法、RLE压缩算法、LZW压缩算法、Rice压缩算法等)进行压缩,并为该聚合请求添加一个压缩标签,表明其经过压缩。
5.代理服务器的套接字通信模块将聚合请求发送到后台服务器。
6.后台服务器收到来自代理服务器的聚合请求,首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,得到所有请求映射对象。后台服务器响应每个请求映射对象内的操作,并将响应结果存入聚合响应,返回给代理服务器。具体处理方式如下:
a)初始化:为聚合响应创建一个空的JSON数组。
b)新创建一个响应映射对象,对收到的请求映射对象做如下处理:
i.对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对。
ii.通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象。
iii.将响应映射对象作为一个元素添加到聚合响应数组。继续执行步骤b),直到处理完所有请求映射对象。
c)后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签,表明其经过压缩。
d)最后,后台服务器将聚合响应通过套接字传回给代理服务器。
7.代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,得到所有响应映射对象。对每个响应映射对象,根据其中的标签(TAG)键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端。
8.代理服务器将已处理的HTTP请求出队,并返回步骤2继续执行。
以上所述方法适用于代理服务器与后台服务器间使用单一套接字进行通信情形。当代理服务器与后台服务器间可以使用多个套接字并发通信时,本发明将按如下方式处理,具体如图4所示:
每个套接字均有一个与其对应的HTTP请求聚合模块和套接字通信模块。Servlet模块在接收到来自移动终端的HTTP请求时,按照一定的算法(如负载均衡法,即在分发时尽量保证各个HTTP请求聚合模块所需处理的请求个数相近)将这些HTTP请求分发到各个HTTP请求聚合模块的原始请求队列中,剩下的步骤即和上述提出的本发明方法实施步骤一致。
以下将结合具体实例,对本发明方法进行说明。
具体实施例二:
本例展示了当有三个移动终端HTTP GET请求到达时,代理服务器如何聚合这些请求。
1.Servlet模块接收来自移动终端的3个HTTP请求:
http://192.168.0.3:8080/Application/login.action?name=u&pas s=p
http://192.168.0.3:8080/Application/show.action?mode=0&time=9
http://192.168.0.3:8080/Application/getDayInfo.action?day=20131106
分别为以上三个请求分配标签:0,1,2,而后将这些请求存入HTTP请
求聚合模块的原始请求队列,同时将这些HTTP请求对应的线程挂起。
2.HTTP请求聚合模块检查原始请求队列有3个HTTP请求,随即记录本次需处理的HTTP请求个数为3。
3.从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历3个HTTP请求,将这些HTTP请求聚合成一个JSON格式的聚合请求。具体聚合过程如下:
对于HTTP请求
http://192.168.0.3:8080/Application/login.action?name=u&pas s=p
可知其标签为0,其请求路径为/Application/login.action,其请
求参数为name=u&pass=p。于是可构造请求映射对象1:
{“TAG”:0,“Action”:”LOGIN”,”name”:”u”,”pass”:”p”}。
同理可构造出其余两个,请求映射对象2:
{“TAG”:1,“Action”:”SHOW”,”mode”:”0”,”time”:”9”};请求映射对象3:
{“TAG”:2,“Action”:”GET_DAY_INFO”,”day”:”20131106”}
最后将这三个请求映射对象依次放入聚合请求数组。
4.假设预定义的门限值MAXSIZE1=1M,压缩模块判断聚合请求大小未超过MAXSIZE1,故不进行压缩。
5.代理服务器的套接字通信模块将聚合请求发送到后台服务器。
6.后台服务器解析聚合请求,得到3个JSON对象:请求映射对象1,请求映射对象2,请求映射对象3。后台服务器响应每个请求映射对象内的操作,具体如下:
对于请求映射对象1:
{“TAG”:0,“Action”:”LOGIN”,”name”:”u”,”pass”:”p”},根据约定,后台服务器获取其TAG、“Action”中的操作”LOGIN”及操作参数,执行后将执行结果存入响应映射对象1。同理,执行剩余两个操作,得到响应映射对象2,响应映射对象3。随后将上述响应映射对象放入聚合响应数组。假设预定义的门限值MAXSIZE2=2M,后台服务器判断聚合响应大小超过MAXSIZE2,故对其采用Huffman压缩算法进行压缩,最后通过套接字将压缩的聚合响应传回给代理服务器。
7.代理服务器解压缩并解析聚合响应,得到3个JSON对象:响应映射对象1,响应映射对象2,响应映射对象3。
代理服务器取出响应映射对象1,根据其中的标签值唤醒Servlet模块中等待的对应HTTP请求线程,设置其响应对象为响应映射对象1的响应键值对,而后将该响应返回给移动终端。
同理代理服务器处理完剩余的响应JSON对象。
8.代理服务器将已处理的3个HTTP请求出队,并返回步骤2继续执行。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (8)
1.一种将移动终端http请求聚合压缩的系统,其特征在于,包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块;
其中,
Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应;Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式;
HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩;
套接字通信模块用于处理代理服务器与后台服务器间的通信。
2.根据权利要求1所述的系统,其特征在于,数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
3.一种将移动终端http请求聚合压缩方法,其特征在于,包括以下步骤:
S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;Servlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间TIMEOUT后继续执行S3;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求;
S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签;
S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器;
S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器;
S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端;
S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
4.根据权利要求3所述的方法,其特征在于,所述S3的聚合方法如下:
S31:为聚合请求创建一个空的JSON数组;
S32:新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
S321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值;
S322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值;
S323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;
S324:将该请求映射对象作为一个元素添加到聚合请求数组;
S325:循环执行S32,直到处理完所有待处理的HTTP请求。
5.根据权利要求3或者4所述的方法,其特征在于,所述S6具体处理方式如下:
S61:为聚合响应创建一个空的JSON数组;
S62:新创建一个响应映射对象,对收到的请求映射对象做如下处理:
S621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对;
S622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象;
S623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象;
S63:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩;
S64:后台服务器将聚合响应通过套接字传回给代理服务器。
6.根据权利要求4所述的方法,其特征在于,S322所述对应的操作为人机语言MML命令:SHOW_USER_INFO。
7.根据权利要求3所述的方法,其特征在于,S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
8.根据权利要求3所述的方法,其特征在于,S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410028872.9A CN103747097B (zh) | 2014-01-22 | 2014-01-22 | 移动终端http请求聚合压缩的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410028872.9A CN103747097B (zh) | 2014-01-22 | 2014-01-22 | 移动终端http请求聚合压缩的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103747097A CN103747097A (zh) | 2014-04-23 |
CN103747097B true CN103747097B (zh) | 2016-08-24 |
Family
ID=50504083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410028872.9A Expired - Fee Related CN103747097B (zh) | 2014-01-22 | 2014-01-22 | 移动终端http请求聚合压缩的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103747097B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539710B (zh) * | 2014-12-31 | 2018-11-09 | 深圳市海蕴新能源有限公司 | 一种轻量级的硬件通信方法和系统 |
CN106341444B (zh) * | 2016-03-16 | 2018-02-13 | 百度在线网络技术(北京)有限公司 | 数据访问方法和装置 |
CN106657277B (zh) * | 2016-11-24 | 2020-06-12 | 上海携程商务有限公司 | Http代理服务方法及服务器和系统 |
CN107277018A (zh) * | 2017-06-22 | 2017-10-20 | 重庆大学 | 一种利用请求/数据聚合提高WebServer的https应用性能的方法 |
CN108259041A (zh) * | 2017-12-29 | 2018-07-06 | 中国电子科技集团公司第二十研究所 | 一种基于改进型lzw编码压缩技术的北斗数据扩容方法 |
CN110958647A (zh) * | 2018-09-27 | 2020-04-03 | 电信科学技术研究院有限公司 | 一种数据传输方法及装置 |
CN109862069B (zh) * | 2018-12-13 | 2020-06-09 | 百度在线网络技术(北京)有限公司 | 消息处理方法和装置 |
CN111343220B (zh) * | 2018-12-18 | 2024-02-09 | 北京京东尚科信息技术有限公司 | 转发器、分布式文件传输方法、系统、介质及电子设备 |
CN109951535B (zh) * | 2019-03-05 | 2021-10-22 | 网经科技(苏州)有限公司 | 基于key-value机制的设备中各个模块间可靠通信方法 |
CN111064771B (zh) * | 2019-11-14 | 2022-07-05 | 福建天晴数码有限公司 | 一种网络请求处理方法及系统 |
CN112527508B (zh) * | 2020-12-21 | 2022-12-09 | 卓尔智联(武汉)研究院有限公司 | 基于sgx的云端飞地资源管理方法、装置、计算机设备和介质 |
CN115174496B (zh) * | 2022-05-23 | 2024-02-13 | 北京大学 | 一种用于网内聚合传输的处理终端和交换机 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075570A (zh) * | 2010-12-31 | 2011-05-25 | 南京中兴特种软件有限责任公司 | 一种基于关键字的http报文缓存机制的实现方法 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN103237083A (zh) * | 2013-05-08 | 2013-08-07 | 北京邮电大学 | 一种移动信息服务资源聚合系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090307304A1 (en) * | 2008-06-10 | 2009-12-10 | International Business Machines Corporation | Method for Server Side Aggregation of Asynchronous, Context - Sensitive Request Operations in an Application Server Environment |
-
2014
- 2014-01-22 CN CN201410028872.9A patent/CN103747097B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075570A (zh) * | 2010-12-31 | 2011-05-25 | 南京中兴特种软件有限责任公司 | 一种基于关键字的http报文缓存机制的实现方法 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN103237083A (zh) * | 2013-05-08 | 2013-08-07 | 北京邮电大学 | 一种移动信息服务资源聚合系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103747097A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103747097B (zh) | 移动终端http请求聚合压缩的系统及方法 | |
WO2019000871A1 (zh) | 用于提供语音服务的方法、装置和服务器 | |
US10075549B2 (en) | Optimizer module in high load client/server systems | |
WO2018223786A1 (zh) | 云桌面系统、及其图像序列压缩编码方法和介质 | |
GB2568594A (en) | Distributed speech processing | |
WO2023103419A1 (zh) | 基于消息队列的5g消息批量发送方法、装置及电子设备 | |
CN102932327A (zh) | 零终端设备与桌面虚拟机之间的通信方法及系统 | |
CN113285931A (zh) | 流媒体的传输方法、流媒体服务器及流媒体系统 | |
WO2023174184A1 (zh) | 虚拟资源处理方法以及装置 | |
CN113590403A (zh) | 压力测试方法、装置、系统、电子设备、存储介质及产品 | |
US20120166585A1 (en) | Apparatus and method for accelerating virtual desktop | |
EP2954401A1 (en) | Transmitting hardware-rendered graphical data | |
US10534737B2 (en) | Accelerating distributed stream processing | |
CN109788251B (zh) | 视频处理方法、装置及存储介质 | |
CN110909359A (zh) | 基于双系统架构的通信方法及终端设备 | |
CN109561048B (zh) | 一种通信管理方法和装置 | |
CN111738721B (zh) | 一种区块链交易监听方法以及相关装置 | |
CN109040304B (zh) | 一种CloudROS云机器人架构 | |
CN109766347B (zh) | 一种数据更新方法、装置、系统、计算机设备及存储介质 | |
CN116132550A (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN112422525B (zh) | 一种故障数据传输方法、装置、设备及存储介质 | |
CN115328609A (zh) | 一种云桌面数据处理的方法及系统 | |
CN109831321B (zh) | 一种数据中心中rdma应用传输参数自适应选择方法 | |
CN102780642A (zh) | 多通道网络报文传输方法 | |
CN105874757A (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: 20160824 Termination date: 20200122 |
|
CF01 | Termination of patent right due to non-payment of annual fee |