移动终端http请求聚合压缩的系统及方法

文档序号:7795907阅读:616来源:国知局
移动终端http请求聚合压缩的系统及方法
【专利摘要】本发明公开了一种移动终端http请求聚合压缩的系统及方法,属于计算机网络通信【技术领域】,包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块。本发明的有益效果如下:本发明在代理服务器处实现了HTTP请求的聚合压缩,能达到使代理服务器与后台服务器间只进行一次套接字通信就能处理多个移动终端的HTTP请求。对于那些代理服务器与后台服务器间通信套接字数量有限,且有大量终端请求并发的场合,本发明可以利用少量套接字处理大量移动终端HTTP请求,能显著减小代理服务器与后台服务器间的通信数据量,降低服务器对终端请求的响应延迟。
【专利说明】移动终端HTTP请求聚合压缩的系统及方法
【技术领域】
[0001]本发明涉及计算机网络通信【技术领域】,尤其涉及一种移动终端HTTP请求聚合压缩的系统及方法。
【背景技术】
[0002]随着移动通信技术的迅猛发展,移动终端得到了广泛的普及。越来越多的业务从PC (Personal computer,个人电脑)转移到了移动终端,移动终端与后台服务器的通信多采用HTTP (Hyper Text Transfer Protocol,超文本传输协议)请求的方式实现。许多业务可能针对PC端已有比较成熟的后台服务器端,若针对移动终端再去设计相应的服务器显然代价太大,为充分利用已有的后台服务器,通常使用代理服务器的方式实现:移动终端发送HTTP请求到代理服务器,代理服务器解析、处理移动终端HTTP请求,并通过套接字(socket)与后台服务器进行交互,最后再由代理服务器将响应结果封装并返回移动终端。
[0003]HTTP请求的URL (Uniform Resource Locator,统一资源定位符)解析后格式如下所示:
[0004]〈request-line〉
[0005]〈headers〉
[0006]〈blank line〉
[0007][<request-body>]
[0008]在HTTP请求中,第一行必须是一个请求行(request-line),用来说明请求的方式(通常为HTTP GET或HTTP POST)、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行(blank line),再此之后可以添加任意的其他数据,即请求主体(request-body)。
[0009]对于一个HTTP GET请求:
[0010]www.abed, com:8080/project/search?namel=valuel&name2=value2 ;
[0011]其对应的请求行〈request-line〉是:
[0012]GET/project/search?namel=valuel&name2=value2HTTP/l.1 ;
[0013]对于一个HTTP POST 请求:
[0014]www.abed, com: 8080/pro ject/search ;
[0015]其对应的请求行〈request-line〉是:GET/project/searchHTTP/1.1 ;
[0016]对应的请求主体〈request-body〉是:namel=valuel&name2=value2;
[0017]以上HTTP 请求的请求路径(request-path)均是:/project/search ;
[0018]请求参数是:namel=valuel&name2=value2。
[0019]当代理服务器与后台服务器釆用套接字方式进行交互,若套接字一次只转发一个移动终端的HTTP请求,则当大量终端请求到来时,必然会导致后续的HTTP请求无法得到及时的响应,造成不良的终端用户体验。
[0020]JS0N: JavaScript Object Notation,JavaScript 对象表不法。
【发明内容】

[0021]本发明的目的在于解决HTTP请求无法得到及时的响应,造成不良的终端用户体验而提出的一种移动终端HTTP请求聚合压缩的系统及方法。
[0022]为了实现以上发明目的,本发明采取的技术方案如下:一种移动终端HTTP请求聚合压缩的系统,包括包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块;
[0023]其中,
[0024]Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应;
[0025]HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式;
[0026]数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩;
[0027]套接字通信模块用于处理代理服务器与后台服务器间的通信。
[0028]作为优选=Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
[0029]作为优选:HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间I1ME0UT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数。
[0030]作为优选:数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
[0031]为解决以上问题,本发明还公开了一种方法,包括以下步骤:
[0032]S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;SerVlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
[0033]S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间I1ME0UT后继续执行S3 ;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
[0034]S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求;
[0035]S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签;
[0036]S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器;[0037]S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器;
[0038]S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端;
[0039]S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
[0040]作为优选:所述S3的聚合方法如下:
[0041]S31:为聚合请求创建一个空的JSON数组;
[0042]S32:新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
[0043]S321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值;
[0044]S322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值;
[0045]S323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;
[0046]S324:将该请求映射对象作为一个元素添加到聚合请求数组;
[0047]S325:循环执行S32,直到处理完所有待处理的HTTP请求。
[0048]作为优选:所述S6具体处理方式如下:
[0049]S61:为聚合响应创建一个空的JSON数组;
[0050]S62:新创建一个响应映射对象,对收到的请求映射对象做如下处理:
[0051]S621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对;
[0052]S622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象;
[0053]S623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象;
[0054]S63:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩;
[0055]S64:后台服务器将聚合响应通过套接字传回给代理服务器。
[0056]作为优选:S322所述对应的操作为人机语言MML命令:SH0W_USER_INF0。
[0057]作为优选:S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
[0058]作为优选:S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
[0059]本发明的有益效果:本发明在代理服务器处实现了 HTTP请求的聚合压缩,能达到使代理服务器与后台服务器间只进行一次套接字通信就能处理多个移动终端的HTTP请求。对于那些代理服务器与后台服务器间通信套接字数量有限,且有大量终端请求并发的场合,本发明可以利用少量套接字处理大量移动终端HTTP请求,能显著减小代理服务器与后台服务器间的通信数据量,降低服务器对终端请求的响应延迟。
【专利附图】

【附图说明】
[0060]图1本发明所采用的整体框架示意图;
[0061 ] 图2本发明方法流程示意图;
[0062]图3 HTTP请求聚合方法示意图;
[0063]图4两个套接字并发时HTTP请求聚合方法示意图。
【具体实施方式】
[0064]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
[0065]一种移动终端HTTP请求聚合压缩的系统,包括包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块;
[0066]其中,
[0067]Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应;
[0068]HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式;
[0069]数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩;
[0070]套接字通信模块用于处理代理服务器与后台服务器间的通信。
[0071 ] Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
[0072]HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间I1ME0UT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数。
[0073]数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
[0074]为解决以上问题,本发明还公开了一种方法,包括以下步骤:
[0075]S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;SerVlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒;
[0076]S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间I1ME0UT后继续执行S3 ;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数;
[0077]S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求;
[0078]S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签;
[0079]S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器;
[0080]S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器;
[0081]S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端;
[0082]S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
[0083]所述S3的聚合方法如下:
[0084]S31:为聚合请求创建一个空的JSON数组;
[0085]S32:新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
[0086]S321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值;
[0087]S322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值;
[0088]S323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;
[0089]S324:将该请求映射对象作为一个元素添加到聚合请求数组;
[0090]S325:循环执行S32,直到处理完所有待处理的HTTP请求。
[0091 ] 所述S6具体处理方式如下:
[0092]S61:为聚合响应创建一个空的JSON数组;
[0093]S62:新创建一个响应映射对象,对收到的请求映射对象做如下处理:
[0094]S621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对;
[0095]S622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象;
[0096]S623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象;
[0097]S63:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩;
[0098]S64:后台服务器将聚合响应通过套接字传回给代理服务器。[0099]S322所述对应的操作为人机语言MML命令:SH0W_USER_INF0。
[0100]S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
[0101]S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
[0102]本发明所公开方法主要由四个模块构成:Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块。
[0103]Servlet模块=Servlet的主要功能是接收从移动终端发送过来的HTTP请求,并返回HTTP响应,具体而言就是从请求对象获得客户端数据并向响应对象创建输出。
[0104]HTTP请求聚合模块:包括原始请求队列,聚合请求,聚合响应数组;原始请求队列:存放各移动终端的HTTP请求;聚合请求:将多个移动终端HTTP请求聚合后的请求,其格式为JSON数组格式;聚合响应数组:后台服务器对聚合请求的响应结果,其格式为JSON数组格式。
[0105]数据压缩模块:判断聚合请求或聚合响应是否超过限定大小,若超过则对其进行压缩。
[0106]套接字通信模块:该模块负责代理服务器与后台服务器间的通信,使用原始套接字实现即两台主机之间进行网络通信、传输数据的方式。
[0107]具体实施例一:
[0108]本发明所提出方法实施步骤如下,运行流程如图2所示:
[0109]1.启动时,代理服务器初始化HTTP请求聚合模块,套接字通信模块。Servlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
[0110]2.HTTP请求聚合模块检查原始请求队列是否为空:若为空,则经过I1ME0UT (—个预设的超时时间)后继续执行步骤2 ;若不为空,则记录下本次待处理HTTP请求个数为MAXNUM (一次性最多聚合的HTTP请求个数)或队列元素个数(当原始请求队列长度小于MAXNUM)ο
[0111]3.从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求。具体的聚合方法见图3,描述如下:
[0112]a)初始化:为聚合请求创建一个空的JSON数组。
[0113]b)新创建一个请求映射对象,对于原始请求队列中的一个HTTP请求,进行如下处理:
[0114]1.获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值。
[0115]i1.将该HTTP请求的请求路径解析成对应的操作(后台服务器能理解并执行该操作,该操作的定义由代理服务器与后台服务器协商决定,如MML(Man-Machine Language人机语言)命令:SH0W_USER_INF0),将该操作作为请求映射对象中Action键的值。
[0116]ii1.若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对。
[0117]若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对。[0118]iv.将该请求映射对象作为一个元素添加到聚合请求数组。
[0119]V.继续执行步骤b),直到处理完所有待处理HTTP请求。
[0120]4.压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法(例如Huffman压缩算法、RLE压缩算法、LZW压缩算法、Rice压缩算法等)进行压缩,并为该聚合请求添加一个压缩标签,表明其经过压缩。
[0121]5.代理服务器的套接字通信模块将聚合请求发送到后台服务器。
[0122]6.后台服务器收到来自代理服务器的聚合请求,首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,得到所有请求映射对象。后台服务器响应每个请求映射对象内的操作,并将响应结果存入聚合响应,返回给代理服务器。具体处理方式如下:
[0123]a)初始化:为聚合响应创建一个空的JSON数组。
[0124]b)新创建一个响应映射对象,对收到的请求映射对象做如下处理:
[0125]1.对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对。
[0126]i1.通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象。
[0127]ii1.将响应映射对象作为一个元素添加到聚合响应数组。继续执行步骤b),直到处理完所有请求映射对象。
[0128]c)后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签,表明其经过压缩。
[0129]d)最后,后台服务器将聚合响应通过套接字传回给代理服务器。
[0130]7.代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,得到所有响应映射对象。对每个响应映射对象,根据其中的标签(TAG)键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端。
[0131]8.代理服务器将已处理的HTTP请求出队,并返回步骤2继续执行。
[0132]以上所述方法适用于代理服务器与后台服务器间使用单一套接字进行通信情形。当代理服务器与后台服务器间可以使用多个套接字并发通信时,本发明将按如下方式处理,具体如图4所示:
[0133]每个套接字均有一个与其对应的HTTP请求聚合模块和套接字通信模块。Servlet模块在接收到来自移动终端的HTTP请求时,按照一定的算法(如负载均衡法,即在分发时尽量保证各个HTTP请求聚合模块所需处理的请求个数相近)将这些HTTP请求分发到各个HTTP请求聚合模块的原始请求队列中,剩下的步骤即和上述提出的本发明方法实施步骤一致。
[0134]以下将结合具体实例,对本发明方法进行说明。
[0135]具体实施例二:
[0136]本例展示了当有三个移动终端HTTP GET请求到达时,代理服务器如何聚合这些请求。
[0137]1.Servlet模块接收来自移动终端的3个HTTP请求:[0138]http://192.168.0.3:8080/Application/login.action?name=u&pas s=p
[0139]http://192.168.0.3:8080/Application/show.action?mode=0&time=9
[0140]http://192.168.0.3:8080/Application/getDaylnf0.action?day=20131106
[0141]分别为以上三个请求分配标签:0,1,2,而后将这些请求存入HTTP请
[0142]求聚合模块的原始请求队列,同时将这些HTTP请求对应的线程挂起。
[0143]2.HTTP请求聚合模块检查原始请求队列有3个HTTP请求,随即记录本次需处理的HTTP请求个数为3。
[0144]3.从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历3个HTTP请求,将这些HTTP请求聚合成一个JSON格式的聚合请求。具体聚合过程如下:
[0145]对于HTTP请求
[0146]http://192.168.0.3:8080/Application/login.action?name=u&pas s=p
[0147]可知其标签为O,其请求路径为/Application/login, action,其请
[0148]求参数为name=u&pass=p。于是可构造请求映射对象1:[0149]{ “TAG”:0, “Action”:”LOGIN”,”name”:”U”,”pass”:”p”}。
[0150]同理可构造出其余两个,请求映射对象2:
[0151]{“TAG,,:1,“Action,,:,,SHOW,,,”mode”:,,O,,,” time”:,,9,,};请求映射对象
[0152]{ “TAG”:2, “Action”: ” GET_DAY_INF0”,” day”: ”20131106”}
[0153]最后将这三个请求映射对象依次放入聚合请求数组。
[0154]4.假设预定义的门限值MAXSIZE1=1M,压缩模块判断聚合请求大小未超过MAXSIZE1,故不进行压缩。
[0155]5.代理服务器的套接字通信模块将聚合请求发送到后台服务器。
[0156]6.后台服务器解析聚合请求,得到3个JSON对象:请求映射对象1,请求映射对象2,请求映射对象3。后台服务器响应每个请求映射对象内的操作,具体如下:
[0157]对于请求映射对象1:
[0158]{ "TAG":0, “Action”:”L0GIN”,”name”:”u”,”pass”:”p”},根据约定,后台服务器获取其TAG、“Action”中的操作”LOGIN”及操作参数,执行后将执行结果存入响应映射对象I。同理,执行剩余两个操作,得到响应映射对象2,响应映射对象3。随后将上述响应映射对象放入聚合响应数组。假设预定义的门限值MAXSIZE2=2M,后台服务器判断聚合响应大小超过MAXSIZE2,故对其采用Huffman压缩算法进行压缩,最后通过套接字将压缩的聚合响应传回给代理服务器。
[0159]7.代理服务器解压缩并解析聚合响应,得到3个JSON对象:响应映射对象I,响应映射对象2,响应映射对象3。
[0160]代理服务器取出响应映射对象1,根据其中的标签值唤醒Servlet模块中等待的对应HTTP请求线程,设置其响应对象为响应映射对象I的响应键值对,而后将该响应返回给移动终端。
[0161]同理代理服务器处理完剩余的响应JSON对象。
[0162]8.代理服务器将已处理的3个HTTP请求出队,并返回步骤2继续执行。
[0163]本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
【权利要求】
1.一种将移动终端http请求聚合压缩的系统,其特征在于,包括Servlet模块,HTTP请求聚合模块,数据压缩模块,套接字通信模块; 其中, Servlet模块用于接收从移动终端发送的HTTP请求并返回HTTP响应; HTTP请求聚合模块:包括原始请求队列、聚合请求和聚合响应数组;原始请求队列用于存放所有移动终端的HTTP请求;聚合请求用于将所有移动终端HTTP请求进行聚合,其格式为JSON数组格式;聚合响应数组是后台服务器对聚合请求的响应结果,其格式为JSON数组格式; 数据压缩模块用于判断聚合请求或聚合响应数组是否超过限定大小,若超过则对其进行压缩; 套接字通信模块用于处理代理服务器与后台服务器间的通信。
2.根据权利要求1所述的系统,其特征在于,Servlet模块具体用于接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒。
3.根据权利要求1或2所述的系统,其特征在于,HTTP请求聚合模块具体用于判断原始请求队列是否为空:若为空,则经过一个预设的超时时间I1ME0UT后继续执行下一步;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MA XNUM,否则如实记录队列元素个数。
4.根据权利要求3所述的系统,其特征在于,数据压缩模块具体用于判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签。
5.根据权利要求1所述的方法,其特征在于,包括以下步骤: S1:代理服务器初始化HTTP请求聚合模块,套接字通信模块;SerVlet模块接收来自移动终端HTTP请求,为每个HTTP请求分配一个唯一的标签并将其存入HTTP请求聚合模块的原始请求队列,同时将该HTTP请求对应的线程挂起,直至响应到来时再被唤醒; S2:HTTP请求聚合模块判断原始请求队列是否为空:若为空,则经过一个预设的超时时间HME0UT后继续执行S3 ;若不为空且队列元素个数大于等于一次性最多聚合的HTTP请求个数MAXNUM,则记录下本次待处理请求个数为MAXNUM,否则如实记录队列元素个数; S3:从HTTP请求聚合模块对应的原始请求队列中从队首开始遍历所有待处理的HTTP请求,将这些HTTP请求聚合成一个JSON数组格式的聚合请求; S4:数据压缩模块判断聚合请求大小是否超过预定义的门限值MAXSIZE1,若超过则对聚合请求使用压缩算法进行压缩,并为该聚合请求添加一个压缩标签; S5:代理服务器的套接字通信模块将聚合请求发送到后台服务器; S6:后台服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合请求,后台服务器解压缩或者解析聚合请求后,得到所有请求映射对象;后台服务器响应每个请求映射对象内的操作,最后将响应结果存入聚合响应,压缩并添加压缩标签后返回给代理服务器; S7:代理服务器首先判断是否存在压缩标签,若存在则先解压缩,否则直接解析聚合响应,代理服务器解压缩或者解析聚合响应后,得到所有响应映射对象;对每个响应映射对象,根据其中的标签键值对来唤醒原始请求队列中对应的HTTP请求线程,并将响应映射对象内的响应键值对作为该HTTP请求的响应返回给移动终端; S8:代理服务器将已处理的HTTP请求出队,并返回S2继续执行。
6.根据权利要求5所述的方法,其特征在于,所述S3的聚合方法如下: S31:为聚合请求创建一个空的JSON数组; S 3 2:新创建一个请求映射对象,对于原始请求队列中的一个HT T P请求,进行如下处理: 5321:获取该HTTP请求的标签,并将该标签作为请求映射对象中TAG键的值; 5322:将该HTTP请求的请求路径解析成对应的操作,并将该操作作为请求映射对象中Action键的值; 5323:若该请求为HTTP GET请求,则从请求行中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对;若该请求为HTTP POST请求,则从请求主体中取出该请求的参数,并将这些参数键值对作为请求映射对象的键值对; 5324:将该请求映射对象作为一个元素添加到聚合请求数组; 5325:循环执行S32,直到处理完所有待处理的HTTP请求。
7.根据权利要求5或者6所述的方法,其特征在于,所述S6具体处理方式如下: 561:为聚合响应创建一个空的JSON数组; 562:新创建一个响应映射对象,对收到的请求映射对象做如下处理: 5621:对于一个请求映射对象,取出其中的TAG键值对并将其作为该响应映射对象的TAG键值对; 5622:通过键值映射取出请求映射对象内的操作及参数,执行后将响应结果存入响应映射对象; 5623:将响应映射对象作为一个元素添加到聚合响应数组,继续执行S62,直到处理完所有请求映射对象; 563:后台服务器判断聚合响应是否超过预定义的门限值MAXSIZE2,若超过则对聚合响应使用压缩算法进行压缩; 564:后台服务器将聚合响应通过套接字传回给代理服务器。
8.根据权利要求6所述的方法,其特征在于,S322所述对应的操作为人机语言MML命令:SH0W_USER_INF0。
9.根据权利要求5所述的方法,其特征在于,S4所述的压缩算法为Huffman压缩算法或者RLE压缩算法。
10.根据权利要求5所述的方法,其特征在于,S4所述的压缩算法为LZW压缩算法或者Rice压缩算法。
【文档编号】H04L29/08GK103747097SQ201410028872
【公开日】2014年4月23日 申请日期:2014年1月22日 优先权日:2014年1月22日
【发明者】李龙江, 郑灵杰 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1