发明内容
本发明的目的在于公开一种CDN的大文件分发方法,实现用户对大文件并发请求的响应速度,减少边缘节点的计算负荷,提高基于CDN环境中的大文件实现分发的效果。
为实现上述发明目的,本发明提供了一种基于CDN的大文件分发方法,包括:DNS模块接收自客户端发送的请求,并发送至元数据服务器;元数据服务器通过检索其内置的文件列表信息对请求是否为大文件进行判断,若该请求是大文件,则向DNS模块应答,并由DNS模块与负载均衡系统在边缘节点集中根据预定策略从边缘节点集中抽选至少一个呈健康状态边缘节点,以响应客户端。
在一些实施方式中,所述负载均衡系统包括:云存储模块、缓存服务器、云计算模块及数据表;
其中,
云存储模块接收边缘节点上传的实时监控信息,存入数据表中的同时更新缓存服务器中所留存的监控信息;
数据表保存全部监控信息,缓存服务器只保存实时监控信息;
所述云计算模块接收DNS模块发送的边缘节点及客户端属性参数,并从缓存服务器中获取边缘节点的实时监控信息,并根据预定策略从边缘节点集中抽选一个呈健康状态边缘节点,以响应客户端。
在一些实施方式中,所述预定策略包括设定边缘节点到客户端IP地址的RTT值,所述RTT值小于等于155ms。
在一些实施方式中,还包括DNS模块通过解析客户端IP地址,在地址库中执行至少一次查找操作,以从边缘节点集中匹配出与客户端IP地址具有相同ISP及相同地域或者周边地域的边缘节点,以构成可用边缘节点集。
在一些实施方式中,所述数据表被配置为数据库、excel文件、word文件、txt文件、json文件或者xml文件。
在一些实施方式中,所述数据库包括:Oracle数据库、DB2数据库、Postgre SQL数据库、Microsoft SQL Server数据库、Microsoft Access数据库或者MySQL数据库。
在一些实施方式中,所述预定策略还包括边缘节点的负载以及边缘节点的带宽;
所述边缘节点的带宽的权重值为40%、边缘节点的负载的权重值为30%、客户端IP地址的RTT值的权重值为30%。
与现有技术相比,本发明的有益效果是:在本发明中,通过DNS模块与负载均衡系统在边缘节点集中根据预定策略从边缘节点集中抽选至少一个呈健康状态边缘节点,实现了用户对大文件并发请求的响应速度,减少了边缘节点的计算负荷,提高了在CDN环境中的大文件实现基于并发请求的数据分发效果。
具体实施方式
下面结合附图所示的各实施方式对本发明进行详细说明,但应当说明的是,这些实施方式并非对本发明的限制,本领域普通技术人员根据这些实施方式所作的功能、方法、或者结构上的等效变换或替代,均属于本发明的保护范围之内。
请参图1至图4所示出的本发明基于CDN的大文件分发方法的一种具体实施方式。在本实施方式中,该基于CDN的大文件分发方法,主要由以下步骤实现。
DNS模块20接收自客户端10发送的请求,并将该请求发送至元数据服务器30;元数据服务器30通过检索其内置的文件列表信息对请求是否为大文件进行判断,若该请求是大文件,则返回DNS模块20并向DNS模块20应答,并由DNS模块20与负载均衡系统40在边缘节点集50中根据预定策略从边缘节点集50中抽选至少一个呈健康状态的边缘节点(例如,边缘节点501),并通过边缘节点501响应客户端10。
元数据服务器30是分发至客户端10并用于汇报待分发文件的大小、修改时间等文件属性的一个索引服务器,同时也表明了此待分发文件目前存在于一个或多个边缘节点中。具体的,该元数据服务器30所具体执行的操作如下所示。
当源站分发文件到边缘节点时,根据待分发文件的属性和文件分发完成情况,添加并修改元数据服务器30中的文件列表信息。在因为特殊需求而需要扩展边缘节点时(即把待分发文件从一个边缘节点拷贝到另一个边缘节点时)也需要修改元数据服务器30中的文件列表信息。在监控到边缘节点集50中的某个边缘节点网络不通或者不可服务时,则也需要修改元数据服务器30中的文件列表信息,删除此边缘节点的信息,防止客户端10发起的range并发请求所导致的大文件在执行分发操作过程中被选取为用于向客户端10的请求响应的边缘节点。
如图1所示,该边缘节点集50中形成有i个边缘节点,即边缘节点501、边缘节点502至边缘节点50i;其中,i没有数量的上限。为简化表示,在边缘节点集50中,使用实线框代表被DNS模块20与负载均衡系统40在边缘节点集50中所选取并用于向客户端10发起的range并发请求作出响应的边缘节点(即边缘节点501),使用虚线框代表没有被DNS模块20与负载均衡系统40所选取的边缘节点(即边缘节点502至边缘节点50i)。
结合图2所示,在本实施方式中,该负载均衡系统40包括:云存储模块401、缓存服务器402、云计算模块404及数据表403;
其中,
云存储模块401接收边缘节点501上传的实时监控信息,存入数据表403中的同时更新缓存服务器402中所留存的监控信息;
数据表403保存全部监控信息,缓存服务器402只保存实时监控信息。其中,监控信息包括边缘节点的带宽、边缘节点的负载、边缘节点的磁盘IO读写、边缘节点的TCP连接数、边缘节点的CPU占用率以及客户端IP地址的RTT值等能够表征边缘节点可用性的参数。监控信息的上报频率为1分钟。实时监控信息是指当前分钟的监控信息,全部监控信息是指从CDN系统自上线到当前分钟这一时间段内的所有监控信息。
云计算模块404接收DNS模块20发送的边缘节点501及客户端属性参数,并从缓存服务器402中获取边缘节点的实时监控数据,并根据预定策略从边缘节点集50中抽选一个呈健康状态边缘节点(例如,边缘节点501),以响应客户端10。当然,可根据预定策略从边缘节点集50中抽选两个或者多个呈健康状态边缘节点(未示出)。
具体的,图1中箭头①代表:DNS模块20调用元数据服务器30的API接口并将客户端10的请求发送给元数据服务器30的过程;图1中的箭头②代表:自客户端10发起的请求向DNS模块20返回是否为大文件的判断结果的过程。图2中的箭头③代表:查询边缘节点与客户端IP地址的实时监控数据的过程;图2中的箭头④代表:返回边缘节点与客户端IP地址的实时监控数据的过程。
在本实施方式中,该数据表403被配置为数据库、excel文件、word文件、txt文件、json文件或者xml文件,并最优选的被配置为数据库。该数据库包括:Oracle数据库、DB2数据库、Postgre SQL数据库、Microsoft SQL Server数据库、Microsoft Access数据库或者MySQL数据库。
如图3所示出的DNS模块20的工作流程图,该DNS模块20所执行的具体步骤如下:
步骤S100,通过DNS模块20传入客户端IP地址。
步骤S101,DNS模块20得到客户端IP地址,查询地址库,找到客户端IP地址的所属地域和ISP信息。
步骤S102,DNS模块20从所有边缘节点中,查找与客户端IP地址具有相同地域和ISP信息的边缘节点。
步骤S103,若步骤S102或者S105找到符合条件的边缘节点,则返回所有可用边缘节点集。
步骤S104,步骤S102未找到符合条件的边缘节点,则进一步查询地址库,得到客户端IP地址所属地域的周边地域。由于每个IP地址都会有一个地域的属性,因此只要与符合条件的边缘节点的地理位置接壤就可称之为周边地域。
步骤S105,从步骤S104得到的周边地域中查找与客户端IP地址具有相同ISP信息的边缘节点。
步骤S106,找不到符合上述条件的边缘节点,则返回空结果集。
参图4所示,图4是负载均衡系统40的工作流程图,该负载均衡系统40所执行的具体步骤如下。
步骤S200,该负载均衡系统40得到经过DNS模块20筛选出与客户端10的IP地址具有相同ISP信息及相同地域或者周边地域的边缘节点。此边缘节点中可包括一个或者多个边缘节点501。这些边缘节点501被判定为与客户端10为相同ISP信息且物理距离最近的边缘节点。
步骤S201,查询数据表403,获得步骤S200中边缘节点的带宽阈值、实时带宽数据、实时负载数据。
步骤S202,分析每个边缘节点的数据是否符合以下条件:
实时带宽≤带宽阈值*60%,以及实时负载<10。其中,带宽阈值取决于边缘节点的硬件配置与具体的网络配置,且这个带宽阈值是固定的。
步骤S203,对于符合S202中的条件的边缘节点被认为是健康值比较好且可用的边缘节点,并将这些健康值比较好且可用的一个或者多个边缘节点用于响应客户端10的请求;返回符合条件的边缘节点。
步骤S204,DNS模块20向负载均衡系统40中的云计算模块404传入客户端IP地址。
步骤S205,云计算模块404得到S203返回的健康值比较好且可用的一个或者多个边缘节点和客户端IP地址,通过查询数据表403,获取每个边缘节点到客户端IP地址的RTT值。
步骤S206,比较每个边缘节点的RTT值,只有当RTT值≤155ms时,才用于响应客户端10发起的大文件分发的请求服务。
步骤S207,返回符合条件的可用边缘节点集。
步骤S208,返回空结果集合。
在传统的CDN环境中,在大文件进行分发的过程中,基本都是一个请求针对一个特定边缘节点的一个大文件。既使采用并发下载技术,也是请求落到同一边缘节点中,从而导致该边缘节点的负载均衡系统40容易出现瓶颈,从而影响到该边缘节点对其他用户的服务或者响应。为此,在本实施方式中,对同一用户的同一大文件的range并发请求可落在多个边缘节点上,减少对单个边缘节点的负载影响,以加快大文件的下载速度或者上传速度。
边缘节点集50中的边缘节点可以位于同一地域的物理机或者数据中心或者计算机集群,也可是位于不同地域的物理机或者数据中心或者计算机集群。当然,某些边缘节点也可位于不同的数据中心或者ISP机房,甚至有可能跨省,跨运营商。只要这些边缘节点符合负载均衡系统40所设的路由指标即可。
当客户端10的range并发请求到达负载均衡系统40时,负载均衡系统40向元数据服务器30发出range并发请求即文件是否是大文件。优选的,大文件定义可以在2MB以上,并可具体根据实际业务需要定义更大规格的大文件(例如,可将大文件定义为4MB等,并依次类推)。元数据服务器30随即检索文件列表信息,如果查询到该文件信息且为大文件,则返回能够提供内容的边缘节点信息给负载均衡系统40。
负载均衡系统40根据返回信息并结合自身的预定策略选出一个或者多个最优的边缘节点,并把此请求优先路由到上述一个或者多个最优的边缘节点中延迟最低的边缘节点。当另一个仅仅是range并发请求不同的请求到达时或者近乎同时到达时,负载均衡系统40基于上述各种“指标”及其“组合”,以从边缘节点集50中选择出一个或者多个处于健康状态的边缘节点,并将此自客户端10发出的请求路由到该边缘节点上。
在同一个用户同一大文件的range并发请求到达的期间,边缘节点集50的内容可能因为负载均衡系统40采用的路由指标而有所变动,比如某个边缘节点因为无法支持客户端10的响应而从边缘节点集50中被剔除。无法支持客户端10的响应的情形,比如因为边缘节点的负载超限而被剔除等。
负载均衡系统40,分为广义的筛选和精细的筛选。其中,广义筛选是指根据客户端10到边缘节点的物理距离作为依据。具体实现如下:将客户端10的IP地址与元数据服务器30返回的含有range并发请求内容的边缘节点集50中所有的边缘节点的IP地址所在的地域和运营商(ISP)逐个进行比较,从而挑选出与客户端10的物理距离最近且服务链路相同的一组边缘节点(其中,边缘节点的数量可为一个,也可为多个)。需要说明的是,与客户端10的物理距离最近且ISP相同的边缘节点被最优先选取,如果上述边缘节点无法被选取或者被占用,则选取与客户端10的物理距离较近且相同ISP的边缘节点。其次,负载均衡系统40基于被动监控/主动监控并经大数据实时分析得出的一系列边缘节点的健康指标,淘汰健康性较差的边缘节点,来保证最终被选取用于响应客户端10所发出的请求的高可用性。负载均衡系统40将并发的range并发请求路由到不同的边缘节点上。这样,既保证了客户端10的请求能够得到边缘节点的响应,也大大缩减请求时间、提高文件分发效率,避免了所有的range并发请求都落到同一个边缘节点上,从而造成某个边缘节点的负载激增而其余同地域或者相同ISP的边缘节点出现空闲的情况。
本实施方式中所指的指标,是指负载均衡系统40基于被动监控/主动监控并经大数据实时分析得出的一系列边缘节点的功能性指标,如边缘节点的带宽、边缘节点所具有的磁盘IO读写能力、边缘节点的TCP连接数情况、边缘节点的CPU配置等参数。
本实施方式中所指的“组合”,是一种算法,从上述指标中算出一个总指标,作为路由客户端10所发出的range并发请求的依据。负载均衡系统40对每项指标配置有一个合理的阈值。其中,边缘节点带宽的阈值是由服务商(ISP)提供。边缘节点所具有的磁盘IO读写、边缘节点的TCP连接数情况、边缘节点CPU配置由经验得出。超出或者低于该阈值表示边缘节点的某项指标不达标,从而影响边缘节点的可用性。
首先,判断边缘节点的带宽是否跑超(即,某个边缘节点对外连接的流量被占满);如果边缘节点的带宽跑超,则导致整个边缘节点范围内所有设备均不可用;
其次,查看边缘节点的负载是否跑超;如果边缘节点的负载跑超,则也可导致整个边缘节点范围内所有设备均不可用;
最后,查看边缘节点所具有的磁盘IO读写、边缘节点的TCP连接数情况、边缘节点CPU配置等各项性能指标是否正常。只有健康性良好的边缘节点才能提供高效、优质的服务,并向客户端10所发起的range并发请求作出响应。
具体的,在本实施方式中,该边缘节点的带宽的权重值为40%、边缘节点的负载的权重值为30%、客户端IP地址的RTT值的权重值为30%。
在本实施方式中,该预定策略包括RTT参数,所述RTT参数小于等于155ms。同时,还包括DNS模块20通过解析客户端IP地址,在地址库中执行至少一次查找操作,以从边缘节点集50中匹配出与客户端IP地址具有相同ISP及相同地域或者周边地域的边缘节点,以构成可用边缘节点集。具体的,被选定并用于向客户端10作出响应的边缘节点可以是具有相同ISP信息以及相同地域的一个或者多个边缘节点,被选定并用于向客户端10作出响应的边缘节点也可以是相同ISP信息以及周边地域的边缘节点。
应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。