发明内容
本发明的目的是提供一种新的用于流媒体的网络结构和数据的存储方法,以减轻网络的负担。
根据本发明的一方面,提供一种用于流媒体的网络结构,包括:
SLB(本地负载均衡器)层,包括至少一个SLB,SLB保存有所述网络结构中所保存的内容的内容状态信息和负载信息,SLB接收用户访问,依据内容状态信息和负载信息调度用户访问,还控制对内容的下载;
CACHE层,包括数个CACHE,其中一个CACHE被定义为主CACHE,所述数个CACHE都与所述至少一个SLB中的每一个相连;所述主CACHE和其他CAHCE建立通信链路,并接收其他CACHE目前正在处理的内容信息,生成所有内容的状态信息;主CACHE还和SLB建立通信链路并向SLB上报内容状态信息和各个CACHE的负载信息,SLB使用主CACHE上报的内容状态信息和负载信息更新原来的内容状态信息的负载信息,并依此作为依据来调度用户访问;所述主CACHE控制其它CACHE对内容的下载;
存储器层,包括至少一个存储器,所述存储器与所述数个CACHE都相连,所述网络结构中的所有内容都统一保存在所述存储器中;
其中,所述主CACHE通过广播机制向其他CACHE发布公告,标识自己为主CACHE,所述主CACHE扫描当前存储器上已经保存的所有内容并记录;如果主CACHE退出所述网络结构,则其他CACHE中的一个会通过广播机制发布公告,成为新的主CACHE。
在上述的网络结构中,所述数个CACHE和SLB之间都建立通信链路,保持通信。
在上述的网络结构中,当所述SLB接收到用户访问时,SLB会依据内容状态信息和负载信息调度用户访问到合适CACHE;如果需要下载内容时,SLB会先通知主CACHE进行内容下载,然后由主CACHE再通过和其他CACHE之间的通信,来选择合适的CAHCE进行下载;当某个CACHE接收到主CACHE的下载命令后,马上开始下载内容,并将该任务执行的状态报告到主CACHE,使得主CACHE能够掌握目前其他CACHE的内容下载情况。
根据本发明的第二方面,提供一种流媒体数据的存储方法,用于所有CACHE使用共同的存储器的网络结构中,所述网络结构还包括SLB,所述方法包括如下步骤:
a1)当一CACHE开始启动时,首先使用广播通信机制探测当前网络结构中是否已经存在主CACHE,如果存在,则进行步骤a2),如果不存在,则进行步骤a5);
a2)所述CACHE立即和网络结构中已经存在的其他CACHE建立通信,并继续使用广播机制探测主CACHE的工作是否正常,并准备接收主CACHE的内容下载管理指令;
a3)所述CACHE和SLB建立通信;
a4)所述CACHE和SLB的通信建立完成后,立即上报健康状况和负载,并准备提供服务;
a5)如果步骤a1中的探测的主CACHE不存在,则所述CACHE立即切换到主CACHE的工作,同时使用广播机制向网络结构中的其他CACHE发布公告,标识自己为主CACHE;
a6)所述CACHE扫描当前存储器上已经保存的所有内容,并记录在内存中;
a7)所述CACHE和网络结构中的其他CAHCE建立通信链路,并接收其他CACHE目前正在处理的内容信息;通过这些CACHE的汇报,生成当前网络结构中所有内容的内容状态信息;
a8)所述CACHE作为主CACHE和SLB建立连接,并通过和SLB的连接上报所述内容状态信息和各个CACHE的负载信息,SLB使用上报的内容状态信息和负载信息更新原来的内容状态信息和负载信息,并依此作为依据来调度用户访问;
a9)当用户访问到达SLB时,SLB会依据内容状态信息和负载信息调度用户访问到合适的CACHE,如果需要下载内容时,SLB控制对于内容的下载;
a10)网络结构中的CACHE执行对于内容的下载;
其中,如果主CACHE退出服务,其他CACHE中的一个会会通过广播机制发布公告接替主CACHE继续进行工作,重复步骤a5-a10。
其中,所述CACHE和SLB之间建立通信链路,保持通信;其中的步骤a9中SLB控制对于内容的下载进一步包括:SLB会依据内容状态信息和负载信息调度用户访问到合适的CACHE,如果需要下载内容时,SLB会先通知主CACHE进行内容下载,然后由主CACHE再通过和其他CACHE之间的通信来选择合适的CAHCE去下载;所述步骤a10中的CACHE执行对于内容的下载进一步包括:当网络中的一个非主CACHE接收到主CACHE的下载命令后,马上开始下载内容,并将该任务执行的状态报告到主CACHE,使得主CACHE能够掌握目前其他CACHE的内容下载情况。
根据本发明的第三方面,提供一种用于流媒体的网络结构,包括:
SLB层,包括至少一个SLB,所述SLB保存有所述网络结构中所保存的内容的内容状态信息和负载信息,SLB接收用户访问,依据内容状态信息和负载信息调度用户访问,所述SLB还包括一CCM,控制对内容的下载;
CACHE层,包括数个CACHE,与所述至少一个SLB中的每一个相连;所述数个CACHE之间建立通信链路,接收其他CACHE目前正在处理的内容信息,所述SLB中的CCM保存有所述网络结构中所保存的所有内容的内容状态信息并控制CACHE对内容的下载;
所述网络结构中还包括存储器,数量与所述CACHE的数量相当,且一一对应地与所述CACHE相连,每一个存储器专门保存一个CACHE的内容。
在上述的网络结构中,所述存储器结合在CACHE中,每一个CACHE包括一个专用的存储器。
在上述的网络结构中,所述数个CACHE和SLB之间建立通信链路,保持通信。
根据本发明的第四方面,提供一种流媒体数据的存储方法,用于包括SLB、数个CACHE以及存储器的网络结构中,所述SLB包括一CCM控制CACHE对于内容的下载,所述存储器的数量与所述CACHE的数量相当,且一一对应地与所述CACHE相连,每一个存储器专门保存一个CACHE的内容,所述方法包括如下步骤:
b1)当一CACHE设备开始启动加入该网络结构进行服务时,首先和网络结构中的所述SLB进行建立通信;
b2)如果SLB此刻处于不活动状态或者工作未就绪状态,CACHE会继续启动,并记录下当前和SLB的状态未成功通信,然后在后台每间隔一定的时间去尝试和SLB建立通信;
b3)CACHE启动后,会扫描当前对应本CACHE的存储器中的所有内容,并录每个内容的大小和实际占用存储空间以及存储目录,并会根据内容存储的目录和原来的配置信息,计算出该内容所属的业务域;
b4)CACHE扫描完所述存储器中的所有内容信息后,会检查SLB的当前状态,如果发现SLB处于通信正常状态,就立即向SLB报告所述对应本CACHE的存储器上的所有内容信息;
b5)SLB得到和每个CACHE上的内容存储情况以后,就将整个网络结构中所有CACHE上的内容进行整理,并依次为依据对用户进行调度,当用户访问请求达到SLB时,SLB通过向CCM模块查询,得到保存该内容的CAHCE,并判断当前CACHE的工作状态以及负载能力是否足够,如果这些条件都满足,就将用户调度到保存了这个内容的CACHE上接收服务;
b6)当CACHE需要下载一内容时,首先CACHE会向SLB发送一条内容下载申请请求,并等待SLB回应后才开始下载;
b7)SLB收到CACHE设备的下载请求以后,首先查看当前活动的其他CACHE的存储器上是否已经存在了该内容,如果该内容已经存在,则拒绝该CACHE的内容下载请求。如果所有CACHE都没有保存该内容文件,而申请下载的CACHE的存储器空间还有剩余,满足业务条件,那么SLB就会同意CACHE的内容下载请求;
b8)当SLB返回内容下载请求的应答以后,CACHE就会进行相应的处理,如果SLB返回了拒绝应答,CACHE就不再进行下载,如果回答了允许,那么CACHE将启动对该内容下载的任务,当任务成功启动后,CACHE将会报告SLB目前该内容正处于下载过程中,此时该内容数据还不完全,还不能为用户提供服务,而SLB知道该消息以后,就不会再分配用户到该CACHE上来;
b9)CACHE在进行内容下载时,如果下载失败,CACHE作出相应的处理并及时报告到SLB,SLB收到下载失败的消息后,就将该内容从CCM的内容信息列表中删除掉;
b10)如果CACHE在下载某个内容的过程中退出网络结构,那么SLB将不会继续接收到CACHE的通信状态,如果SLB发现所述CACHE状态不在工作状态,就会马上将该CACHE上的内容信息标记为无效状态;
b11)当用户访问请求到达该网络结构时,首先访问到SLB上,而SLB会根据当前内容的分布情况首先进行调度,同时如果该用户请求访问的内容在网络结构中不存在,SLB的CCM模块决定是否需要对该内容进行下载,如果需要下载,CCM模块会根据当前内容在多个CACHE上的分布情况和各个CACHE上的资源和负载来选取一个适合下载该内容的CACHE,并发送内容下载请求。
其中,所述CACHE都和SLB建立通信链路保持通信;所述步骤b4中的CACHE向SLB报告所述对应本CACHE的存储器上的所有内容信息包括报告每个内容文件的名称,所属业务域,文件实际大小,占用存储空间大小,并把其转化为和本地磁盘无关的描述信息,发送给SLB,和SLB保持同步。
采用了本发明的技术方案,提供一种新的用于流媒体的网络结构和数据的存储方法,以减轻网络的负担,从而可实现集群式缓存服务系统。
具体实施方式
下面结合具体实施例进一步说明本发明的技术方案。
首先,本发明的提供一种防止不同的CACHE之间重复下载、保存相同的内容的技术,从而节省网络的资源。
参考图1,本发明提供一种用于流媒体的网络结构100,包括:
SLB层,包括至少一个SLB102,SLB102保存有网络结构100中所保存的内容的内容状态信息和负载信息,SLB102接收用户访问,依据内容状态信息和负载信息调度用户访问,SLB102还包括一CCM103,控制对内容的下载;
CACHE层,包括数个CACHE 104a、104b、104c,与至少一个SLB102中的每一个相连;数个CACHE之间建立通信链路,接收其他CACHE目前正在处理的内容信息,SLB 102中的CCM 103保存有所述网络结构中所保存的所有内容的内容状态信息并控制CACHE对内容的下载;
网络结构中100还包括存储器106,数量与CACHE 104的数量相当,且一一对应地与CACHE 104相连,每一个存储器专门保存一个CACHE的内容。
图2示出了上述网络结构的一个变化例,其中的存储器106结合在CACHE 104中,每一个CACHE 104包括一个专用的存储器106。就工作原理来说,图1和图2所示的实施例是一样的。
在图1或者图2所示的网络结构中,数个CACHE 104和SLB 102之间建立通信链路,保持通信。
在上述的网络结构中,可以实现下述的数据存储方法:
一种流媒体数据的存储方法,用于包括SLB、数个CACHE以及存储器的网络结构中,SLB包括一CCM控制CACHE对于内容的下载,存储器的数量与CACHE的数量相当,且一一对应地与CACHE相连,每一个存储器专门保存一个CACHE的内容,该方法包括如下步骤:
b1)当一CACHE设备开始启动加入该网络结构进行服务时,首先和网络结构中的所述SLB进行建立通信;
b2)如果SLB此刻处于不活动状态或者工作未就绪状态,CACHE会继续启动,并记录下当前和SLB的状态未成功通信,然后在后台每间隔一定的时间去尝试和SLB建立通信;
b3)CACHE启动后,会扫描当前对应本CACHE的存储器中的所有内容,并录每个内容的大小和实际占用存储空间以及存储目录,并会根据内容存储的目录和原来的配置信息,计算出该内容所属的业务域;
b4)CACHE扫描完所述存储器中的所有内容信息后,会检查SLB的当前状态,如果发现SLB处于通信正常状态,就立即向SLB报告所述对应本CACHE的存储器上的所有内容信息;
b5)SLB得到和每个CACHE上的内容存储情况以后,就将整个网络结构中所有CACHE上的内容进行整理,并依次为依据对用户进行调度,当用户访问请求达到SLB时,SLB通过向CCM模块查询,得到保存该内容的CAHCE,并判断当前CACHE的工作状态以及负载能力是否足够,如果这些条件都满足,就将用户调度到保存了这个内容的CACHE上接收服务;
b6)当CACHE需要下载一内容时,首先CACHE会向SLB发送一条内容下载申请请求,并等待SLB回应后才开始下载;
b7)SLB收到CACHE设备的下载请求以后,首先查看当前活动的其他CACHE的存储器上是否已经存在了该内容,如果该内容已经存在,则拒绝该CACHE的内容下载请求。如果所有CACHE都没有保存该内容文件,而申请下载的CACHE的存储器空间还有剩余,满足业务条件,那么SLB就会同意CACHE的内容下载请求;
b8)当SLB返回内容下载请求的应答以后,CACHE就会进行相应的处理,如果SLB返回了拒绝应答,CACHE就不再进行下载,如果回答了允许,那么CACHE将启动对该内容下载的任务,当任务成功启动后,CACHE将会报告SLB目前该内容正处于下载过程中,此时该内容数据还不完全,还不能为用户提供服务,而SLB知道该消息以后,就不会再分配用户到该CACHE上来;
b9)CACHE在进行内容下载时,如果下载失败,CACHE作出相应的处理并及时报告到SLB,SLB收到下载失败的消息后,就将该内容从CCM的内容信息列表中删除掉;
b10)如果CACHE在下载某个内容的过程中退出网络结构,那么SLB将不会继续接收到CACHE的通信状态,如果SLB发现所述CACHE状态不在工作状态,就会马上将该CACHE上的内容信息标记为无效状态;
b11)当用户访问请求到达该网络结构时,首先访问到SLB上,而SLB会根据当前内容的分布情况首先进行调度,同时如果该用户请求访问的内容在网络结构中不存在,SLB的CCM模块决定是否需要对该内容进行下载,如果需要下载,CCM模块会根据当前内容在多个CACHE上的分布情况和各个CACHE上的资源和负载来选取一个适合下载该内容的CACHE,并发送内容下载请求。
在上述的方法中,CACHE和SLB建立通信链路;其中,
步骤b4中的CACHE向SLB报告所述对应本CACHE的存储器上的所有内容信息包括报告每个内容文件的名称,所属业务域,文件实际大小,占用存储空间大小,并把其转化为和本地磁盘无关的描述信息,发送给SLB,和SLB保持同步。
图3示出了根据上述方法的一个具体实施例的流程图,该实施例用于下述的网络结构中,该网络结构包括一台SLB和多个CACHE,每个CACHE都拥有各自的存储空间来进行缓存服务。为了实现节点内部的内容不重复下载和保存,在SLB上增加了内容控制模块(CCM,Content Control Model),由CCM负责网络结构内部多个CACHE上的内容统一控制,从而实现节点内部内容不重复下载和保存的功能。
为了实现内容不重复下载和保存的功能,实现CCM对于多个CACHE的内容统一管理和分配,首先需要实现CACHE和SLB之间的内容控制通信。CCM和CACHE之间的内容控制通信采用IMP(intelligent managementprotocol)协议。图3所示的实施例包括了如下的步骤:
301.当CACHE开始启动加入该网络结构进行服务时,首先和该网络结构中的SLB进行通信,和SLB建立连接。该过程的特点是,CACHE启动时立即和SLB进行通信,保证SLB对CAHCE的状态变化及时获知。
302.如果SLB此刻处于不活动状态或者工作未就绪状态,CACHE会继续启动,并记录下当前和SLB的状态未成功通信,然后在后台每间隔一定的时间去尝试和SLB建立通信。该过程的特点在于CACHE能够处理各种SLB的异常情况,防止SLB在不正常工作状态下影响CACHE的工作。
303.CACHE设备启动后,会扫描当前存储器空间内的所有所保存的内容,并将详细记录每个内容的大小,实际占用存储空间,存储目录,并会根据内容存储的目录和原来的配置信息,计算出该内容所属的业务域。该过程的特点是,CACHE启动时就会立即扫描,立即保证存储的实际内容和控制信息相一致,并通过这一机制,很好的避免了实际存储的内容和控制信息的差异带来服务失败。另一个特点就是,对于内容控制信息的实时性得到了很大的提高,内容信息不使用数据库和文件进行保存,而是在启动时进行实际扫描,避免了实际内容和控制信息的不同步。
304.CACHE扫描完所有的内容信息后,会检查SLB的当前状态,如果发现SLB处于通信正常状态,就立即向SLB报告本CACHE上的所有内容信息,包括每个内容文件的名称,所属业务域,文件实际大小,占用存储空间大小,并把他转化为和本地磁盘无关的描述信息,发送给SLB,和SLB保持同步。这一过程的特点在于CACHE和SLB在通信恢复正常后,马上就会同步更新CACHE和SLB上的内容信息,保证SLB上的内容信息和CACHE实际存储的内容相同,并保证在SLB和CAHCE无法通信的时间里,内容的变化不会影响内容的统一管理。同时可以看到这一过程中,多个CACHE都会将自己的时间内容分布情况和占用磁盘资源情况都报告给SLB,如果SLB重新启动或者通信恢复以后,够能够及时获得当前CACHE上的实际内容信息,进而完成对整个节点内的内容统一控制。
305.SLB得到每个CACHE上的内容存储情况以后,就将整个节点内部的所有CACHE上的内容进行整理,并依次为依据对用户进行调度,当用户访问请求达到SLB时,SLB通过向CCM模块查询,得到该内容存在的CAHCE,并判断当前CACHE的工作状态以及负载能力是否足够,如果这些条件都满足,就将用户调度到保存了这个内容的CACHE上接收服务。
306.当CACHE设备因为某种情况(产生情况的原因不在本文的讨论范围之内)发生了一些事件,需要下载某个内容时,首先CACHE会向SLB发送一条内容下载申请请求,并等待SLB回应后才开始下载。该过程的特点是CACHE设备对于内容的下载严格处于SLB的控制之下,即使CACHE上产生了需要下载的原因,但是没有经过SLB的允许,CACHE仍然不能够下载,这样一来就可以保证SLB对于节点内部所有内容的集中控制。
307.SLB收到CACHE设备的下载请求以后,首先查看当前活动的其他CACHE上是否已经存在了该内容,如果该内容已经存在,则拒绝该CACHE的内容下载请求。如果所有CACHE都没有缓存该内容文件,而申请下载的CACHE存空间还有剩余,满足业务条件,那么SLB就会同意CACHE的内容下载请求。这一过程的特点是SLB的CCM模块会在收到CACHE进行内容下载请求的同时检查其他所有CACHE上的内容是否和该下载请求中的内容重复,以此来保证在同一个网络结构的内部,一个内容文件只有一个拷贝。
308.当SLB返回内容下载请求的应答以后,CACHE就会进行相应的处理,如果SLB返回了拒绝应答,CACHE就不再进行下载,如果回答了允许,那么CACHE将启动对该内容下载的任务。当任务成功启动后,CACHE设备将会报告SLB,目前该内容正处于下载过程中,此时该内容数据还不完全,还不能为用户提供服务,而SLB知道该消息以后,就不会再分配用户到该CACHE上来。这一过程的特点是,当CACHE进行内容下载处理时,也会将内容正在下载的状态报告给SLB,而SLB会根据这些正在下载的状态来进行相应的处理,保证正在进行内容下载的中间状态能够正确处理。
309.CACHE在进行内容下载时,因为网络或者其他原因可能出现下载失败的情况,出现了这种情况后,CACHE也会作出相应的处理,并及时报告到SLB,SLB收到下载失败的消息后,就将该内容从CCM的内容信息列表中删除掉。这一过程的特点是当CACHE进行内容下载的过程中出现异常时,也能同时报告到SLB,并保证SLB和CACHE上的内容信息同步。
310.如果CACHE在下载某个内容的过程中,因为某种原因退出服务,那么SLB将不会在继续接受到CACHE的通信状态,如果SLB发现该CACHE状态不在工作状态,就会马上将该CACHE上的内容信息标记为无效装状态。这一过程的特点是SLB可以处理CACHE设备的异常工作状态,保证各种情况下服务的可靠性。
311.当某个用户访问请求到达该节点时,应该首先访问到SLB上,而SLB会根据当前内容的分布情况首先进行调度,同时如果该用户请求访问的内容在本节点都不存在,SLB的CCM模块会根据一些策略来决定是否需要对该内容进行下载,如果需要下载,CCM模块会根据当前内容在多个CACHE上的分布情况和各个CACHE上的资源和负载来选取一个适合下载该内容的CACHE,并发送内容下载请求。该过程的特点是每个CACHE是否需要下载,都有SLB的CCM来决定,这样一来就避免了多个CACHE下载一个内容的情况,而且还能根据多个CACHE的资源使用情况,负载情况统一起来进行判断。
需要说明,图3所示的流程图的中的每一个方框并不是与上述的步骤一一对应的,有可能数个方框表示的是同一个步骤,也有可能数个步骤集中在同一个方框内表示,但是,对于本领域的技术人员来说,上述的表达方式并不会影响对于本发明的过程的理解。
随着网络技术的不断发展,包括多个服务组件,比如包括CACHE、OCC以及上述的网络结构的综合集群系统得到了更加广泛的应用,在综合集群系统中,可以使用共享存储的模式进行工作,这种模式下,多个服务组件共同使用同一个物理存储,一个CACHE组件下载的内容,其他CACHE也可以访问,这极大的提高了磁盘利用率。
同时在共享存储的模式下工作时,为网络的改造和能力平滑升级创造了条件,在使用共享存储的模式下,如果流服务能力不够时,可以直接通过增加服务器,而不增加存储的方式来提高服务能力,而不需要对原来的存储划分重新部署,也不影响现有的服务内容。
传统的CACHE都是每台CACHE都配有专门的存储来保存需要CAHCE的内容,各个CACHE之间的内容互相独立,没有其他关系,而且每个CACHE拥有的存储是事先规划好的,以后的调整可以针对每台CACHE进行,随着流媒体业务的迅猛发展,逐渐产生了多个服务器使用同一个物理存储,多个服务器组成类似一个集群服务系统的形式,当前在电信,互联网行业内,基于短连接的集群服务系统比较常见,比如web机群,radius机群,而流媒体领域内的多个流服务机群系统还未有先例,同时当这些服务器又能作为CACHE时,整个集群系统的功能不仅是只提供服务,而且对于内容的缓存和管理都是封装成整体的集群系统来进行的。
由此,本发明提供一种用于流媒体的网络结构400,包括:
SLB层,包括至少一个SLB 402,SLB 402保存有网络结构400中所保存的内容的内容状态信息和负载信息,SLB 402接收用户访问,依据内容状态信息和负载信息调度用户访问,还控制对内容的下载;
CACHE层,包括数个CACHE 404a、404b、404c,其中一个CACHE被定义为主CACHE,数个CACHE 404都与至少一个SLB 402中的每一个相连;主CACHE和其他CAHCE建立通信链路,并接收其他CACHE目前正在处理的内容信息,生成所有内容的状态信息;主CACHE还和SLB 402建立通信链路并向SLB 402上报内容状态信息和各个CACHE 404的负载信息,SLB 402使用主CACHE上报的内容状态信息和负载信息更新原来的内容状态信息的负载信息,并依此作为依据来调度用户访问;主CACHE控制其它CACHE对内容的下载;
存储器层,包括至少一个存储器406,存储器406与数个CACHE 404都相连,网络结构400中的所有内容都统一保存在存储器406中;
其中,主CACHE通过广播机制向其他CACHE发布公告,标识自己为主CACHE,主CACHE扫描当前存储器406上已经保存的所有内容并记录;如果主CACHE退出网络结构400,则其他CACHE中的一个会通过广播机制发布公告,成为新的主CACHE。
在上述的结构400中,数个CACHE 404和SLB 402之间建立通信链路,保持通信。
在上述的结构400中,当SLB 402接收到用户访问时,SLB 402会依据内容状态信息和负载信息调度用户访问到合适CACHE;如果需要下载内容时,SLB 402会先通知主CACHE进行内容下载,然后由主CACHE再通过和其他CACHE之间的通信,来选择合适的CAHCE进行下载;当某个CACHE接收到主CACHE的下载命令后,马上开始下载内容,并将该任务执行的状态报告到主CACHE,使得主CACHE能够掌握目前其他CACHE的内容下载情况。
根据上述的网络结构,整个集群系统可以分为三层,第一层为SLB层,第二层为CACHE服务层,第三层为存储器层,其中服务层中的每个CACHE直接和SLB相连接,并和存储直接连接,存储上的逻辑区和存储内容对于每个CACHE都是可见的,都可以采用可读可写的方式向存储读写数据,同时多个CACHE之间也互相连接,建立了通信链路。
这样设计的好处是当服务器能力资源不够时,可以动态的扩充服务器,而且新扩充的服务器可以立即使用原来存储上的所有内容,而不是说需要重新下载内容才可以提供服务,并且也不需要在原来的存储上重新划分一部分逻辑区专门给该服务器使用,并且不破坏原来的存储划分。如果说要扩充存储,也可以让所有服务器都能使用到该扩充的部分,在扩容和调整时非常方便。在加上SLB的作用,使得外界的访问可以平均分担到所有的CACHE服务器上,实现负载均衡,整个组织形成了一个完整的集群服务系统,更可贵的是这个集群系统是建立在应用层的基础之上,可以处理多种应用层的服务信息。
本发明还提供一种流媒体数据的存储方法,其特征在于,用于所有CACHE使用共同的存储器的网络结构中,网络结构还包括SLB,该方法包括如下步骤:
a1)当一CACHE开始启动时,首先使用广播通信机制探测当前网络结构中是否已经存在主CACHE,如果存在,则进行步骤a2),如果不存在,则进行步骤a5);
a2)所述CACHE立即和网络结构中已经存在的其他CACHE建立通信,并继续使用广播机制探测主CACHE的工作是否正常,并准备接收主CACHE的内容下载管理指令;
a3)所述CACHE和SLB建立通信;
a4)所述CACHE和SLB的通信建立完成后,立即上报健康状况和负载,并准备提供服务;
a5)如果步骤a1中的探测的主CACHE不存在,则所述CACHE立即切换到主CACHE的工作,同时使用广播机制向网络结构中的其他CACHE发布公告,标识自己为主CACHE;
a6)所述CACHE扫描当前存储器上已经保存的所有内容,并记录在内存中;
a7)所述CACHE和网络结构中的其他CAHCE建立通信链路,并接收其他CACHE目前正在处理的内容信息;通过这些CACHE的汇报,生成当前网络结构中所有内容的内容状态信息;
a8)所述CACHE作为主CACHE和SLB建立连接,并通过和SLB的连接上报所述内容状态信息和各个CACHE的负载信息,SLB使用上报的内容状态信息和负载信息更新原来的内容状态信息和负载信息,并依此作为依据来调度用户访问;
a9)当用户访问到达SLB时,SLB会依据内容状态信息和负载信息调度用户访问到合适的CACHE,如果需要下载内容时,SLB控制对于内容的下载;
a10)网络结构中的CACHE执行对于内容的下载;
其中,如果主CACHE退出服务,其他CACHE中的一个会会通过广播机制发布公告接替主CACHE继续进行工作,重复步骤a5-a10。
在上述的方法中,CACHE和SLB之间建立通信链路,保持通信;
其中的步骤a9中SLB控制对于内容的下载进一步包括:SLB会依据内容状态信息和负载信息调度用户访问到合适的CACHE,如果需要下载内容时,SLB会先通知主CACHE进行内容下载,然后由主CACHE再通过和其他CACHE之间的通信来选择合适的CAHCE去下载;
步骤a10中的CACHE执行对于内容的下载进一步包括:当网络中的一个非主CACHE接收到主CACHE的下载命令后,马上开始下载内容,并将该任务执行的状态报告到主CACHE,使得主CACHE能够掌握目前其他CACHE的内容下载情况。
下面结合图5介绍根据本发明的一具体实施例的一数据保存方法的流程,参考图5,该方法包括:
501.当CACHE开始启动时,首先使用广播通信机制去探测当前集群服务系统中是否存在主CACHE,如果存在,则进行步骤2。
502.该CACHE立即和其他CACHE设备建立通信,并继续使用广播机制探测主CACHE的工作是否正常,并准备接收主CACHE的内容下载管理指令。
503.CACHE和SLB建立通信,和SLB模块建立连接。
504.当CACHE和SLB的通信建立完成后,立即上报健康状况和负载,并准备提供服务。
505.如果步骤501中的探测的主CACHE服务器不存在,则立即开始切换到主CACHE的工作,同时使用广播机制向外发布公告,标识自己为主CACHE状态。
506.立即扫描当前存储上已经保存的所有内容,并记录在内存中,这时可能会扫描到一些正处在下载状态中,或者没有下载完成的内容文件。
507.和其他CAHCE建立通信链路,并接收其他CACHE目前正在处理的内容信息,比如某个内容正在下载,下载完成等信息。通过这些CACHE的汇报,再次整理合并成目前集群系统中所有的内容状态信息。
508.主CACHE然后和SLB建立连接,并通过和SLB的连接上报内容信息,SLB遇到主的SLB上报内容信息以后,立即更新原来的内容数据信息,并依此作为依据来调度用户访问,同时也向SLB报告当前该CACHE上的服务负载信息。
509.当用户访问到达SLB时,SLB会依据内容的分布情况和各个CACHE的负载调度用户访问到合适的服务器。如果需要下载内容时,SLB会先通知主CACHE进行内容下载,然后由主CACHE再通过和其他CACHE之间的通信,来选择合适的CAHCE去实际下载。
510.当某个CACHE接收到主CACHE的下载命令后,马上开始下载内容,并将该任务执行的状态报告到主CACHE,使得主CACHE能够掌握目前其他CACHE的内容下载情况。
511.在整个系统的运行期间,如果主CACHE退出服务,其他CACHE会接替主CACHE继续进行工作,重复步骤505-511。如果其他非CACHE退出了服务,系统不会受到影响。
同样需要说明,图5所示的流程图的中的每一个方框并不是与上述的步骤一一对应的,有可能数个方框表示的是同一个步骤,也有可能数个步骤集中在同一个方框内表示,但是,对于本领域的技术人员来说,上述的表达方式并不会影响对于本发明的过程的理解。
采用了本发明的上述技术方案,为网络的改造和能力平滑升级创造了条件,在使用共享存储的模式下,如果流服务能力不够时,可以直接通过增加服务器,而不增加存储的方式来提高服务能力,而不需要对原来的存储划分重新部署,也不影响现有的服务内容。
综合而言,本发明提供了一种新的用于流媒体的网络结构和数据的存储方法,组建完整的集群式缓存服务系统,可用于实现那些需要平滑提升服务性能,存储能力的系统。
虽然上面的实施例仅以流媒体服务系统作为实例进行描述,但是该发明可以应用的范围不仅仅限于以流媒体服务为内容的系统。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。