内容提供方法和系统转让专利

申请号 : CN200810170092.2

文献号 : CN101729497A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵邑新韩竹邵凌郑凯

申请人 : 国际商业机器公司

摘要 :

本发明公开了一种内容提供方法和系统。该内容提供方法可以包括如下步骤:根据客户端的HTTP下载请求,在控制节点生成不含所请求的内容数据的部分响应;在数据节点将与所述HTTP下载请求相对应的内容附加到该部分响应,生成完整响应;和将该完整响应提供给该客户端。

权利要求 :

1.一种内容提供方法,包括如下步骤:

根据客户端的HTTP下载请求,在控制节点生成不含所请求的内容数据的部分响应,并发送给数据节点;

在数据节点将与所述HTTP下载请求相对应的内容附加到该部分响应,生成完整响应;和将该完整响应提供给该客户端。

2.根据权利要求1所述的内容提供方法,其中所述数据节点包括分别存储数据内容的多个分布式的数据节点。

3.根据权利要求2所述的内容提供方法,还包括如下步骤:根据负载均衡来选择提供所请求内容的数据节点。

4.根据权利要求1或3所述的内容提供方法,还包括如下步骤:在数据节点修改所述部分响应的报头。

5.根据权利要求4所述的内容提供方法,其中修改报头的步骤包括修改所述报头的内容长度域以反映内容的实际长度。

6.根据权利要求1所述的内容提供方法,其中在生成部分响应的步骤之前还包括如下步骤:判断从客户端接收的请求是否为HTTP下载请求。

7.根据权利要求1所述的内容提供方法,其中提供完整响应的步骤包括如下步骤:打开TCP套接字,将所述完整响应作为TCP的净荷发送。

8.根据权利要求7所述的内容提供方法,提供完整响应的步骤还包括如下步骤:在将所述完整响应作为TCP的净荷发送之后,调整TCP状态机以设置相应的TCP状态和参数。

9.根据权利要求8所述的内容提供方法,提供完整响应的步骤还包括如下步骤:在调整TCP状态机之后,将所述完整响应的内部IP地址和内部端口号转换为外部IP地址和外部端口号,将所述完整响应发送到客户端。

10.一种内容提供系统,包括彼此通信连接的控制节点和数据节点,其中该控制节点包括部分响应生成装置,用于根据客户端的HTTP下载请求生成不含所请求的内容数据的部分响应;和发送装置,用于将所生成的部分响应发送给数据节点,该数据节点包括:

附加装置,用于将与所述HTTP下载请求相对应的内容附加到该部分响应以生成完整响应;和内容提供装置,将该完整响应提供给该客户端。

11.根据权利要求10所述的内容提供系统,其中所述数据节点包括分别存储数据内容的多个分布式的数据节点,每个数据节点均包括所述附加装置和内容提供装置。

12.根据权利要求11所述的内容提供系统,其中所述控制节点还包括数据节点选择装置,用于根据负载均衡来选择提供所请求内容的数据节点。

13.根据权利要求10或12所述的内容提供系统,其中所述数据节点还包括重写装置,用于修改所述部分响应的报头。

14.根据权利要求13所述的内容提供系统,其中所述重写装置修改所述报头的内容长度域以反映内容的实际长度。

15.根据权利要求10所述的内容提供系统,还包括:判断装置,与部分响应生成装置通信连接,用于判断从客户端接收的请求是否为HTTP下载请求。

16.根据权利要求10所述的内容提供系统,其中所述内容提供装置打开TCP套接字,将所述完整响应作为TCP的净荷发送。

17.根据权利要求16所述的内容提供系统,所述数据节点还包括:调整装置,与所述内容提供装置通信连接,用于调整TCP状态机以设置相应的TCP状态和参数。

18.根据权利要求17所述的内容提供系统,还包括:地址/端口处理装置,与所述调整装置通信连接,将所述完整响应的内部IP地址和内部端口号转换为外部IP地址和外部端口号以发送到客户端。

说明书 :

技术领域

本发明涉及内容提供方法和系统,尤其是涉及通过HTTP(超文本传输协议)进行内容提供的方法和系统。

背景技术

web/web2.0应用得到了广泛的采用。在网络应用中,HTTP下载是最为常用的获取内容的方法。对于某些平台而言,HTTP下载是唯一可用的获取内容的方法。这主要是由于以下几点原因:物理限制,例如移动电话等目前仅能够采用HTTP下载;安全性,例如,某些单位或实体仅允许到Internet的HTTP访问;防火墙/NAT(网络地址转换)的限制,HTTP是最容易穿过防火墙/NAT的协议。
目前,为了优化系统设计,很多内容提供平台,尤其是大的数据中心、门户网站或者企业网站,常常采用计算和数据/存储分离的环境。即,控制/逻辑节点和存储节点是分离的。这主要出于如下考虑:效率,例如可以通过高速缓存来提高内容提供的效率;可扩展性,例如,可以提高存储的可扩展性;云计算,云计算要求分离计算和存储;以及其它性能和安全考虑,例如内部URI(统一资源标识符)隐藏。
图1示出在上述环境下典型的HTTP下载的场景。如图所示,在客户端与内容提供系统之间设有防火墙/NAT。请注意在以下描述的方法和系统中同样存在防火墙/NAT,但是为了便于说明省略了其图示和解释。具有一定客户端IP的客户端101发出HTTP请求。该请求可以是例如外部IP或者服务器名加外部端口(例如)的形式,例如HTTP://server:80/a.avi,请求对内容a.avi访问和获取。该请求穿过防火墙/NAT之后,由分离的控制/逻辑节点105和数据/内容节点110来处理和响应。控制/逻辑节点105具有内部IP1,数据/内容节点110具有与内部IP1不同的内部IP2。数据/内容节点实际存储的数据内容的名称可能不同于用户请求的名称,而是例如与a.avi对应的文件名称,例如在/resource/2008/video/目录下存放的775lkn3t.avi之类的名称。
图2示出一种现有的内容提供方式的示意图。该方式可称为直接服务方式。在该方式中,首先由HTTP客户端101发送一个HTTP请求。然后,控制/逻辑节点105根据该请求向数据/内容节点110请求加载数据。接着,数据/内容节点110将带有数据的响应返回控制/逻辑节点105。最后,由控制/逻辑节点105将HTTP响应提供给客户端。由此实现HTTP下载。在此方式中,控制/逻辑节点105先向数据/内容节点110请求加载数据,然后数据/内容节点110将带有数据的响应传输到此控制/逻辑节点105,再由控制/逻辑节点105将完整的HTTP响应提供给客户端。因此,直接服务方式的主要缺陷在于存在重复的内部流量,即,控制/逻辑节点和数据/内容节点之间的重复的数据传送处理,由此造成HTTP响应效率低、内容提供平台的性能下降等不利影响。
图3示出另一种现有的内容提供方式的示意图。该方式可称为第一重定向方式。在该方式中,首先由HTTP客户端101发送一个HTTP请求。然后,控制/逻辑节点105向数据/内容节点110发送元数据查询,并由数据/内容节点110将对此的原始响应发回控制/逻辑节点105。此处的元数据可以是例如所请求数据在数据/内容节点110的实际存放路径。接着,控制/逻辑节点105将HTTP重定向报文提供给客户端。然后,客户端根据重定向报文向数据/内容节点110发送另一HTTP请求。最后,数据/内容节点110向客户端提供HTTP响应。由此实现HTTP下载。在此方式中,虽然消除了内部流量,但是HTTP请求处理中交换的报文数目增多,处理效率降低。并且,存在客户端重定向的用户体验。此外,此方式使得内部URL被暴露。
图4示出另一种现有的内容提供方式的示意图。该方式可称为第二重定向方式。该方式与第一重定向方式的不同之处在于增加了节点M。其中,控制/逻辑节点105将HTTP重定向报文提供给节点M,而不是客户端101。节点M可以是全状态HTTP代理。然后,节点M根据重定向报文向数据/内容节点110发送另一HTTP请求。然后数据/内容节点110向客户端提供HTTP响应。在此方式中,虽然消除了客户端重定向体验,也不会使得内部URL被暴露,但是HTTP请求处理中交换的报文数目仍然较多,处理效率较低。并且,增加了多余节点M。

发明内容

鉴于现有技术中存在的上述问题,本发明的一个目的是提供一种内容提供方法和系统,其能够减少HTTP请求处理中交换的报文数目。此外,本发明的方法和系统还可以消除内部流量以及客户端重定向体验。优选地但非限制性地,本发明的方法和系统尤其适合应用于计算部分和数据部分分离的内容提供平台。
为了实现上述目的,根据本发明的一个方面,提供一种内容提供方法。该内容提供方法可以包括如下步骤:根据客户端的HTTP下载请求,在控制节点生成不含所请求的内容数据的部分响应,并发送给数据节点;在数据节点将与所述HTTP下载请求相对应的内容附加到该部分响应,生成完整响应;和将该完整响应提供给该客户端。
根据本发明的另一方面,提供一种内容提供系统。该内容提供系统可以包括彼此通信连接的控制节点和数据节点。该控制节点可以包括:部分响应生成装置,用于根据客户端的HTTP下载请求生成不含所请求的内容数据的部分响应;和发送装置,用于将所生成的部分响应发送给数据节点。该数据节点可以包括:附加装置,用于将与所述HTTP下载请求相对应的内容附加到该部分响应以生成完整响应;和内容提供装置,将该完整响应提供给该客户端。
当结合以下说明和附图考虑时,将更好地获知和理解本发明的这些和其它方面以及实施例。

附图说明

图1示出典型的HTTP下载的场景。
图2示出一种现有的内容提供方式的示意图。
图3示出另一种现有的内容提供方式的示意图。
图4示出又一种现有的内容提供方式的示意图。
图5示出本发明的原理简图。
图6示出根据本发明实施例的内容提供方法的流程图。
图7示出根据本发明另一实施例的内容提供方法的流程图。
图8示出根据本发明实施例的内容提供系统的框图。
图9示出根据本发明又一实施例的内容提供系统的框图。
图10示出了适于本发明的计算机系统的结构方框图。

具体实施方式

以下参照附图说明本发明的原理及其实施例。
本发明的原理概述
图5示出本发明的原理简图。如图5所示,在应用本发明的控制节点和数据节点分离的环境中,控制/逻辑节点105接收客户端的HTTP请求。然后,控制/逻辑节点105根据客户端的HTTP下载请求,生成不含所请求的内容数据的部分HTTP响应,并将其发送到数据/内容节点110。数据/内容节点110将与HTTP请求相对应的内容附加到部分HTTP响应以生成完整响应,并将该完整响应直接提供给客户端。
根据本发明,HTTP请求处理中交换的报文数目仅为2个,与现有技术相比显著减少。此外,本发明还消除了控制节点和数据节点之间的多余的内部流量,并且客户端不存在重定向体验。
以下参照附图6-9描述本发明的实施例。
实施例1
图6示出根据本实施例的内容提供方法的流程图。
如图6所示,在步骤601,从客户端接收请求。
然后,在步骤610,在防火墙/NAT判断该请求是否为HTTP下载请求。例如,步骤601和610可以如常规处理一样在防火墙/NAT进行。
在判断请求为HTTP下载请求的情况下,处理前进到步骤620。在步骤620,根据客户端的HTTP下载请求,在控制节点生成不含所请求的内容数据的部分响应。
接着,在步骤630,将所生成的部分响应以及TCP信息发送到对应的数据节点。
接着,在步骤640,在数据节点将与HTTP下载请求相对应的内容附加到部分响应。
然后,在步骤650,重写部分响应的HTTP报头,例如重写内容长度域以反映内容的实际长度。由此,生成完整的HTTP响应。
接着,在步骤660,打开TCP套接字,将完整的HTTP响应作为TCP的净荷向客户端发送。由此,向客户端提供完整的HTTP响应。
在步骤660之后,还可以包括与常规处理相同的处理步骤。例如,在步骤670,在数据节点调整TCP状态机以设置相应的TCP状态和参数。接着,在步骤680,由防火墙/NAT进行源IP地址/端口处理,将完整响应的内部IP地址和内部端口号转换为外部IP地址和外部端口号。最后,在步骤690,向客户端发出完整响应的包。
此外,在判断请求不是HTTP下载请求的情况下,处理前进到步骤615,进行常规处理。在步骤615,由数据节点判断是否是已有会话的TCP ACK(确认)。如果是,则在前进到步骤670,调整TCP状态机。如果否,则在步骤618停止处理。
实例
以下给出上述内容提供方法的一个实例。
首先,客户端发出一个HTTP请求报文,该请求报文中主要信息例如为:
GET a.avi  HTTP/1.1
[其他Header(报头)略]
该请求由控制/逻辑(Control/Logical)节点解析处理后,生成的一个部分的HTTP响应(Response)报文例如为:
HTTP/1.1200OK
Date:Fri,13Jun 2008 03:06:01
Server:Apache/2.0.54(Win32)PHP/5.0.5DAV/2
Last Modified:Fri 13 Jun 2008 03:00:55 GMT
ETag:“367b-8ca0-7c8aa924”
Accept-Ranges:bytes
Content-Length:
Keep-Alive:timeout=15,max=100
Connection:Keep-Alive
Content-Type:video/avi
可以看到,在该Response报文中,Content-Length(内容长度域)没有值;报文后部也没有内容的数据。
然后,Contol/Logical节点将该部分报文和TCP相关信息传送给数据/内容节点。TCP的信息例如如下(括号内为说明):
Destination Port:07 2A(16进制数,这是客户端的端口号)
ACK Number:4B CA 48 79(16进制数)
Flags:0010(16进制数,只有ACK位置为1,其他位为0)
Window size:0B 58(16进制数,TCP窗口大小)
经过数据/内容节点处理后,得到例如如下的完整的HTTPResponse报文:
HTTP/1.1200 OK
Date:Fri,13 Jun 2008 03:06:01
Server:Apache/2.0.54(Win32)PHP/5.0.5 DAV/2
Last Modified:Fri 13 Jun 2008 03:00:55 GMT
ETag:“367b-8ca0-7c8aa924”
Accept-Ranges:bytes
Content-Length:3379208
Keep-Alive:timeout=15,max=100
Connection:Keep-Alive
Content-Type:video/avi
[内容字节略]
可以看到,内容附加到了HTTP Response报文的后部,修改了Content-Length部分,以反映内容的实际长度(以字节计)。
接着,数据/内容节点打开TCP Socket,将该HTTP Response报文作为TCP的净荷(Payload)传送。在发送第一个TCP Segment(TCP分段)时,根据由控制/逻辑节点提供的TCP信息,设置相应的TCP状态和参数。
当TCP/IP报文经由防火墙/NAT发向客户时,源IP地址会被替换为外部的IP地址(External IP),源端口号替换为外部的端口号(External Port),发送到客户端。
实施例2
在上述实施例中,对数据节点作为整体描述,而没有限定其具体组成。实际上,本发明可以支持分布式数据/内容节点。也就是说,数据节点可以包括多个数据节点。
图7示出在这种情况下的内容提供方法的流程图。在图7中,采用相同的标号表示与图6相同的步骤,并省略其详细描述。
本实施例的方法与实施例1的不同之处在于增加了步骤625。在步骤620生成部分响应之后,在步骤625,根据负载均衡选择多个分布式数据/内容节点中的适当节点。然后,在步骤630,将所生成的部分响应以及TCP信息发送到对应的数据节点。
此外,在分布式数据节点的情况下,在防火墙/NAT还执行与分布式数据节点相关的,例如基于映射查找选择数据节点、更新映射表等。由于到客户端的响应总是由位于NAT内部的数据节点发起,因此,根据NAT的工作原理具体的客户端在随后的通信中总能和相应的数据节点对应起来。上述常规处理并不是本发明所要限制的,因而为了清楚描述本发明起见,省略了上述常规处理的图示和详细说明。
实施例3
图8示出根据本实施例的内容提供系统的框图。
如图8所示,根据本实施例的内容提供系统800包括彼此通信连接的控制节点810和数据节点850。
控制节点810可以包括部分响应生成装置820,用于根据客户端的HTTP下载请求生成不含所请求的内容数据的部分响应;发送装置830,用于将所生成的部分响应发送到对应的数据节点。
数据节点850包括:附加装置855,用于将与HTTP下载请求相对应的内容附加到该部分响应以生成完整响应;和内容提供装置870,将该完整响应提供给客户端。例如,内容提供装置870可以打开TCP套接字,将所述完整响应作为TCP的净荷发送。
数据节点850还可以包括重写装置860,用于修改所述部分响应的报头。具体地,重写装置860可以修改例如报头的内容长度域以反映内容的实际长度。
此外,内容提供系统800还可以包括与部分响应生成装置820通信连接的判断装置(未示出),用于判断从客户端接收的请求是否为HTTP下载请求。例如,判断装置可以在防火墙/NAT中实现。
数据节点850还可以包括与内容提供装置870通信连接的调整装置(未示出),用于调整TCP状态机以设置相应的TCP状态和参数。
内容提供系统800还可以包括与调整装置通信连接的地址/端口处理装置(未示出),将所述完整响应的内部IP地址和内部端口号转换为外部IP地址和外部端口号以发送到客户端。例如,地址/端口处理装置可以在防火墙/NAT中实现。
实施例4
在上述实施例中,对数据节点850作为整体描述,而没有限定其具体组成。实际上,本发明可以支持分布式数据/内容节点。也就是说,数据节点可以包括多个数据节点。
图9示出在这种情况下的内容提供系统800’的框图。在图9中,采用相同的标号表示与图8相同的装置,并省略其详细描述。
在内容提供系统800’中,包括分别存储数据内容的多个分布式的数据节点850、900、910等,每个数据节点均包括与855附加装置和内容提供装置870相同的附加装置和内容提供装置,还可以包括与重写装置860相同的重新装置。此外,每个数据节点还可以包括与数据节点850的调整装置相同的调整装置。
如图9所示,控制节点810’与实施例3的控制节点810的不同之处在于还可以包括数据节点选择装置825,用于根据负载均衡来选择提供所请求内容的适当数据节点。例如,选择数据节点850作为提供所请求内容的数据节点。
类似地,本实施例的内容提供系统800’可以包括与实施例3的内容提供系统800相同的判断装置和地址/端口处理装置。
图10示意性示出了可以实现根据本发明的各个实施例的计算机系统的结构方框图。
图10中所示的计算机系统包括CPU(中央处理单元)1001、RAM(随机存取存储器)1002、ROM(只读存储器)1003、系统总线1004,硬盘控制器1005、键盘控制器1006、串行接口控制器1007、并行接口控制器1008、显示器控制器1009、硬盘1010、键盘1011、串行外部设备1012、并行外部设备1013和显示器1014。在这些部件中,与系统总线1004相连的有CPU 1001、RAM 1002、ROM 1003、硬盘控制器1005、键盘控制器1006,串行接口控制器1007,并行接口控制器1008和显示器控制器1009。硬盘1010与硬盘控制器1005相连,键盘1011与键盘控制器1006相连,串行外部设备1012与串行接口控制器1007相连,并行外部设备1013与并行接口控制器1008相连,以及显示器1014与显示器控制器1009相连。
图10中每个部件的功能在本技术领域内都是众所周知的,并且图10所示的结构也是常规的。这种结构不仅用于个人计算机和服务器,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的内容提供系统的服务器主机时,可以向图10中所示的结构添加某些部件,或者图10中的某些部件可以被省略。图10中所示的整个系统由通常作为软件存储在硬盘1010中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘1010中,或者从网络下载的软件可被加载到RAM 1002中,并由CPU1001执行,以便完成由软件确定的功能。
尽管图10中描述的计算机系统能够支持根据本发明的提供的技术方案,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明的实施例。
本发明还可以实现为例如由图10所示的系统所使用的计算机程序产品,其可以包含有用于实现根据本发明的内容提供方法或系统的部分或全部的代码。在使用之前,可以把代码存储在其它计算机系统的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。
所公开的本发明的方法可以在软件、硬件、或软件和硬件的结合中实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器、个人计算机(PC)或大型机来执行。
以上描述了本发明的优选实施例。具体实施例的以上描述完整地展现了本发明的一般特性,其它方面可通过应用当前知识在不脱离一般原理的情况下容易地修改和/或适应这些具体实施例的各个应用。因此这些应用和修改应该并且意欲被理解为在所公开实施例的含义和等同范围内。
应该理解,这里采用的措辞和术语是说明的目的,而不是限制。因此,虽然根据实施例已经描述了本发明,但是本领域普通技术人员将认识到,在所附权利要求的范围内可以通过修改来实现本发明。