一种节点负载的分布式cdn全局调度的方法

文档序号:7797170阅读:204来源:国知局
一种节点负载的分布式cdn全局调度的方法
【专利摘要】本发明涉及一种节点负载的分布式CDN全局调度的方法,包括以下步骤:根据业务类型确定调度方案;根据用户访问调度服务器的客户端IP进行IP定位,确定其所在的IP位置信息;根据确定的调度方案和确定的用户IP位置信息去匹配位置路由策略;根据位置路由策略来选择目标路由策略,从而确定CDN节点;根据确定CDN节点,选择该CDN节点对应的一台或者多台节点内服务器,进行随机负载均衡,最终向用户返回被选中的CDN节点服务器的地址信息,为用户提供CDN访问的服务。本发明可以提升CDN整体用户服务的体验质量,提升CDN整体抗突发峰值流量的能力,同时通过节点的优化调度来降低整体的运营成本。
【专利说明】一种节点负载的分布式CDN全局调度的方法
【技术领域】
[0001]本发明涉及信息【技术领域】,特别是涉及一种节点负载的分布式CDN全局调度的方法。
【背景技术】
[0002]当今的⑶N系统,特别是国内互联网视频⑶N系统一般是通过在所需覆盖的地区不同运营商网络内就近部署边缘节点,为用户提供就近服务的方式。目前有采用基于用户访问的DNS服务器进行负载均衡的方式,也有基于IP调度的方式来进行负载均衡的方式。
[0003]另外,在自运营的CDN系统中,一方面可能会使用自建的节点来提供差异化的优质服务,另一方面可能会利用第三方商用CDN系统来解决覆盖面的问题来提高服务的覆盖率从而提升服务质量。对于CDN中分布在各地的各个节点,以及接入的第三方CDN系统,需要有一个方法能够一方面在自建的CDN节点间做负载均衡,另一方面又能够在自建CDN和商用CDN之间做一个平衡,在充分利用自建资源并保证服务质量的基础上来降低整体的运营成本。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种节点负载的分布式CDN全局调度的方法,能够根据用户来源和部署在各地的节点网络负载的情况进行动态地调整,从而达到对用户访问进行CDN节点优先路由选择,实现各CDN节点间的负载均衡的目的,从而提升用户访问服务质量和降低⑶N整体运营成本。
[0005]本发明解决其技术问题所采用的技术方案是:提供一种节点负载的分布式CDN全局调度的方法,包括以下步骤:
[0006]( I)根据业务类型确定调度方案;
[0007](2)根据用户访问调度服务器的客户端IP进行IP定位,确定其所在的IP位置信息;
[0008](3)根据确定的调度方案和确定的用户IP位置信息去匹配位置路由策略;
[0009](4)根据位置路由策略来选择目标路由策略,从而确定⑶N节点;
[0010](5)根据确定CDN节点,选择该CDN节点对应的一台或者多台节点内服务器,进行随机负载均衡,最终向用户返回被选中的CDN节点服务器的地址信息,为用户提供CDN访问的服务。
[0011]所述步骤(I)包括以下子步骤:
[0012](11)建立两个映射表,第一个映射表是内容对应调度方案的映射表,第二个映射表是频道对应调度方案的映射表;
[0013](12)根据用户输入的内容查找第一个映射表,确定调度方案,如果没有查到,就根据用户输入的频道查找第二个映射表,确定调度方案。
[0014]所述步骤(2)包括以下子步骤:[0015](21)建立两个映射表,第一个映射表是位置表,用于存储基础的位置信息,每个位置信息包含位置ID、运营商、省份和城市四个字段;第二个映射表是IP表,用于存储IP段和位置ID的映射关系,包含IP,MASK,位置ID三个字段;
[0016](22)在匹配的时候,根据客户端IP,按照IP库的最长匹配方法,在IP表中查找对应的位置ID,然后根据查找到的位置ID,得到该用户所在的运营商、省份、城市的信息,并用“运营商.省份.城市”来表示成IP位置信息。
[0017]所述步骤(3)包括以下子步骤:
[0018](31)建立一个位置路由表,包含位置路由ID、IP位置通配符、调度方案三个字段;
[0019](32)根据IP位置信息和调度方案按照通配符匹配的方式进行模糊匹配,按照通配符从短到长匹配算法依次匹配出一个或者多个位置路由ID。
[0020]所述步骤(32)中对整个位置路由表进行加载,并建立四层树状结构,其中,第一层为root层,第二层为“运营商”层,第三层为“省份”层,第四层为“城市”层,root层仅有一个节点,该节点表示匹配任何IP位置,剩下的每一层具有多个节点,节点按照节点的Key值根据字典序方式排列。
[0021]所述步骤(4)中,一个位置路由策略能够匹配一条或者多条目标路由策略,当匹配出多条目标路由策略时,多条目标路由策略根据权重、优先级、时间段参数、以及当前节点的网络带宽可用容量来进行筛选,从而确定首选CDN节点。
[0022]所述步骤(4)包括以下子步骤:
[0023](41)创建目标路由表,该表的字段如下:位置路由ID、生效起止时间、优先级、权重;
[0024](42 )创建⑶N节点表,该表的字段如下:CDN节点ID,多个⑶N目标URL地址,当前带宽可用容量,当前节点需要被分流的百分比,以及节点的可用状态;
[0025](43)根据位置路由ID得到所有对应的目标路由记录,并根据其⑶N节点ID得到CDN节点表中的相关参数;
[0026](44)对目标路由记录按照时间段、可用状态进行筛选,过滤掉节点当前不可用的记录;
[0027](45)对于剩余的可用目标路由记录按照优先级进行分组,按照优先级作为分组号进行排序;
[0028](46)对分组内的目标路由记录,根据其权重和可用容量百分比,分流百分比三个参数,来进行选择,如果可用容量不足的目标路由记录则进入溢出表;
[0029](47)如果当前分组没有可用的记录,并且当前分组不是最后一个分组,则在溢出表中将每条记录的分流值进行累加,计算得到平均值后作为权重值,进行随机选择,确定是在溢出表还是下一个分组中继续选择目标路由记录;如果当前分组没有可用的服务器,并且当前分组已经是最后的分组,则对溢出表中的记录按照每条记录以权重X (1-分流百分t匕)来作为权重随机选择的权重参数,在溢出表内进行随机选择,选中的记录返回CDN节点ID0
[0030]所述步骤(5)中如果没有可用的⑶N节点能够匹配到,则返回步骤(4)获取下一个位置路由策略。
[0031]所述步骤(5)包括以下子步骤:[0032](51)根据⑶N节点ID,找到对应的⑶N记录;
[0033](52)对⑶N记录中一个或者多个URL作随机选择,进行负载均衡,最后将选中的URL返回。
[0034]以下对一些名词进行解释:
[0035]频道:作为区分不同业务的一个标识,如视频VOD中的某个“电影频道”或者“电视
剧频道”等。
[0036]内容:在频道中提供的各项服务,如视频VOD中的某个影片。
[0037]IP位置:即根据用户端网络接入的IP,用于定位用户所处的运营商,所在省份和城市的位置,为了区别于物理位置,这个位置这里定义为IP位置,并用“运营商.省份.城市”三段式来表示。
[0038]CDN节点:即分布于各个运营商网络内不同城市的内容分发加速的边缘节点,或者是引入的第三方商用CDN系统。CDN节点之间将根据既定的相关策略进行负载均衡,在用户服务质量和系统运营成本上进行一个权衡。
[0039]调度策略:本方法对整个调度策略从逻辑上划分为三个层次:1.调度方案;2.位置路由策略;3.目标路由策略。以下分别对这三个进行说明:
[0040]其中,调度方案是一套由位置路由策略、目标路由策略组成的调度的方案。它针对不同的内容或者不同的频道来提供不同的调度方案,从而能够根据业务类型来提供差异化服务。
[0041]其中,位置路由策略是根据用户所在IP位置(包括运营商、省份、城市)来确定其采用哪一组目标路由策略来选择目标CDN节点。
[0042]其中,目标路由策略是根据特定的用户IP位置,当前时间、⑶N节点的权重、优先级、网络带宽的空闲状况来进行优化选择,从而实现在多个CDN节点之间进行负载均衡,提升带宽利用率。
[0043]有益效果
[0044]由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明采用基于静态IP库进行IP调度的方式,并通过和流量监控系统进行对接,利用实现配置好的调度策略来实现对用户的就近路由选择,同时根据各个节点的流量变化情况来实现自建CDN节点以及自建CDN和商用CDN之间的动态的负载平衡,从而实现资源充分有效的利用的目的。
【专利附图】

【附图说明】
[0045]图1是本发明的流程图;
[0046]图2是匹配位置路由策略时建立的数据结构示意图。
【具体实施方式】
[0047]下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。[0048]本发明的实施方式涉及一种节点负载的分布式CDN全局调度的方法,包括以下步骤:根据业务类型确定调度方案;根据用户访问调度服务器的客户端IP进行IP定位,确定其所在的IP位置信息;根据确定的调度方案和确定的用户IP位置信息去匹配位置路由策略;根据位置路由策略来选择目标路由策略,从而确定CDN节点;根据确定CDN节点,选择该CDN节点对应的一台或者多台节点内服务器,进行随机负载均衡,最终向用户返回被选中的⑶N节点服务器的地址信息,为用户提供⑶N访问的服务。本发明可以提升⑶N整体用户服务的体验质量,提升CDN整体抗突发峰值流量的能力,同时通过节点的优化调度来降低整体的运营成本。
[0049]如图1所示,以下对实现方法进行具体描述。
[0050](一)根据用户访问的内容、频道确定其对应采用哪一套调度方案,即根据业务类型确定调度方案。如果无法成功匹配相应的调度方案,则执行步骤(六)。
[0051]详细实现如下:
[0052]输入:内容ID
[0053]频道ID
[0054]输出:调度方案ID
[0055]实现方法:
[0056]首先,建立两个映射表,第一个是内容ID_>调度方案ID的映射表,第二个是频道ID_>调度方案ID的映射表。
[0057]然后,根据输入的内容ID首先查找第一个映射表,如果没有查到,就根据输入的频道ID查找第二个映射表,如果还是没有查到,则执行步骤(六)。
[0058](二)根据用户访问调度服务器的客户端IP进行IP定位,确定其所在的IP位置信息,包括运营商网络和省份城市信息(根据IP库的精度而定)。IP位置信息用“运营商.省份.城市”三段式来表示。如果无法成功匹配用户的IP位置信息,则执行步骤(六)。
[0059]详细实现如下:
[0060]输入:客户端IP
[0061]输出:IP位置信息
[0062]实现方法:
[0063]首先,建立两个映射表,第一个是位置表,存储基础的位置信息,每个位置信息包含如下字段,位置ID、运营商、省份、城市;第二个表是IP表,存储IP段和位置ID的映射关系,包含如下字段,IP,MASK,位置ID几个字段。
[0064]其次,在匹配的时候,根据客户端IP,按照IP库的最长匹配方法,在IP表中查找对应的位置ID,然后根据查找到的位置ID,得到该用户所在的运营商、省份、城市的信息,并用“运营商.省份.城市”来表示成IP位置信息。
[0065]在进行IP库的查找的时候,可以预先将IP库缓存的调度服务器的内存中,在内存中采用相关高速查找算法进行快速的匹配查找,从而避免因为IP库查询性能差导致系统瓶颈的发生。
[0066](三)根据步骤(一)确定的调度方案,以及步骤(二)确定的用户IP位置信息去匹配位置路由策略。匹配的时候采用通配符匹配的方式,通配符规则允许最右边的位置信息用*表示,如用户的网络位置为“浙江杭州电信”,可以用“电信.浙江.杭州”的匹配规则来匹配,也可以用“电信.浙江.*”来匹配,也可以用“电信.*”来匹配,甚或用来匹配。根据最长优先匹配算法,从长到短匹配依次匹配出多个位置路由ID。以下步骤(四)和步骤(五)根据匹配到的多个位置路由策略ID按照其匹配长度依次执行。
[0067]详细实现如下:
[0068]输入:IP位置信息
[0069]调度方案ID
[0070]输出:位置路由ID组
[0071]实现方法:
[0072]首先,建立一个位置路由表,包含,位置路由ID、IP位置通配符、调度方案ID几个字段。
[0073]其次,根据IP位置信息和调度方案ID采用以上介绍的按照通配符匹配的方式进行模糊匹配,按照最长有限匹配算法,从长到短依次匹配出多个位置路由ID。
[0074]为了加速通配符匹配的性能,可以通过将整个位置路由表加载到内存中,避免数据库的查询来解决。另外,通过在内存中建立如图2的数据结构,有助于性能进一步提升。
[0075]如图2所示,建立四层树状结构,第一层为root层,第二层为“运营商”层,第三层为“省份”层,第四层为“城市”层。其中root层仅有一个节点,该节点表示匹配任何IP位置,剩下的每一层具有多个节点,节点按照节点的Key值根据字典序方式排列,便于进行快速的二分查找。其中带双边框的方格代表是一个“可识别节点”,就是说一旦查找的时候遇到这个节点,可以认为已经匹配,如果该节点没有子节点或者在子节点上匹配失败,则返回当前匹配的节点。
[0076]建立这个数据结构的步骤如下:
[0077]A)首先创建root层的节点,设置其为非“可识别节点”。
[0078]B)针对每个需要添加的通配符匹配规则循环执行以下步骤。
[0079]C)获取下一个通配符匹配规则,进行分析,将其依次拆分成“运营商”、“省份”、“城市”三个段或者小于三个段,对于最右一个段为通配符*的,则忽略之。
[0080]D)如果当前的通配符匹配规则没有“运营商”段,则设置root层的节点为“可识别节点”(即该规则是“*”,匹配所有IP位置),并跳转到步骤C)进行执行。
[0081]E)如果当前的通配符规则有“运营商”段,则通过root层的节点,得到指向“运营商”层的指针,如果该指针为空,则创建一个新的“运营商”层对象,并将其关联到root层,作为root层的子节点。
[0082]F)在“运营商”层中查找当前的运营商段,如果查找到匹配的节点,则跳转到步骤g)进行执行。如果没有查找到匹配的节点,则创建一个新的“运营商”节点按照字典序插入到该“运营商”层中。
[0083]G)如果当前的通配符匹配规则没有“省份”段,则设置以上查找到的“运营商”节点或者刚刚创建的“运营商”节点为“可识别节点”。
[0084]H)依次类推,直到通配符匹配规则的“省份”、“城市”几个段设置完毕,跳转到步骤C)继续执行。
[0085]查找的步骤如下:
[0086]A)首先获取root层的节点,判断该节点是否为“可识别节点”,如果是“可识别节点”,则将该节点对应的“位置路由ID”添加到输出列表中。
[0087]B)根据root层节点得到指向“运营商层”的指针。
[0088]C)如果“运营商层”指针为空,则跳转到步骤E)。否则,获取待匹配的IP位置中的“运营商”字段,在“运营商层”中进行二分查找,如果没有查找到,则跳转到步骤E);如果查找到,则检查该“运营商”节点是否为“可识别节点”,如果是可识别节点,则将该节点对应的“位置路由ID”加入到输出列表中。然后得到该“运营商”节点对应的下层“省份层”的指针。
[0089]D)依次类推,直到匹配到“城市层”,或者匹配失败。
[0090]E)返回输出列表中匹配到的一个或者多个位置路由ID。
[0091](四)根据步骤(三)确定的位置路由策略ID,来选择目标路由策略,一个位置路由策略ID可以匹配一条或者多条目标路由策略,多条目标路由策略根据权重、优先级、时间段参数、以及当前节点的网络带宽可用容量来进行筛选,从而确定首选CDN节点。如果没有可用的目标路由策略可以匹配到,则获取下一个位置路由策略ID继续执行本步骤,如果没有更多的位置路由策略ID则执行步骤(六)。
[0092]详细实现如下:
[0093]输入:位置路由ID
[0094]输出:CDN节点ID
[0095]实现方法:
[0096]首先,创建目标路由表,该表的字段如下:位置路由ID、生效起止时间、优先级、权重。
[0097]其次,创建⑶N节点表,该表的字段如下:CDN节点ID,多个⑶N目标URL地址,当前带宽可用容量,当前节点需要被分流的百分比,以及节点的可用状态。其中最后三个字段可以通过监控系统通过定时采集来获取各个CDN节点的状态,并将采集到的指标进行相关运算后更新进来。
[0098]筛选的流程如下:
[0099]A)根据位置路由ID,得到所有对应的目标路由记录,并根据其⑶N节点ID得到CDN节点表中的相关参数,包括当前带宽可用容量以及可用状态等。
[0100]B)对目标路由记录按照时间段、可用状态进行筛选,过滤掉节点当前不可用的记录。
[0101]C)对于剩余的可用目标路由记录按照优先级进行分组,按照优先级作为分组号进行排序,对于每个分组执行以下操作。
[0102]D)获取下一个分组,对分组内的目标路由记录,根据其权重和可用容量百分比,分流百分比三个参数,来进行选择。如果可用容量大于0,则根据权重X可用容量百分比的值作为权重随机选择的权重参数,在本组内进行随机选择。如果可用容量等于0,则将当前目标路由记录放入溢出表中不再参与本组的按权重随机选择。如果有可用的记录,则返回该记录对应的⑶N节点ID。
[0103]E)如果当前分组没有可用的记录,并且当前分组不是最后一个分组,则在溢出表中将每条记录的分流值进行累加,计算得到平均值后作为权重值,进行随机选择,确定是在溢出表还是下一个分组中继续选择目标路由记录;如果当前分组没有可用的服务器,并且当前分组已经是最后的分组,则对溢出表执行步骤F)。
[0104]F)如果选中的是溢出表,则对溢出表中的记录按照每条记录以权重X (1-分流百分比)来作为权重随机选择的权重参数,在溢出表内进行随机选择,选中的记录返回CDN节点ID。
[0105]G)如果选中的是下一个分组,则跳转到步骤D)继续执行。
[0106]在这里,通过溢出表的建立,能够平滑控制不同优先级的CDN节点平滑地将流量从高到低进行溢出,从而实现⑶N节点的“切峰”处理,提升⑶N节点的利用率。
[0107](五)根据确定的CDN节点ID,选择该节点对应的一台或者多台节点内服务器,进行随机负载均衡,最终向用户返回被选中的CDN节点服务器的HTTP地址,为用户提供CDN访问的服务。如果没有可用的CDN节点可以匹配到,则获取下一个位置路由策略的ID继续从步骤(四)开始执行,如果没有更多的位置路由策略ID则执行步骤(六)。
[0108]详细实现如下:
[0109]输入:CDN节点ID
[0110]输出:目标节点的URL
[0111]实现方法:
[0112]A)根据⑶N节点ID,找到对应的⑶N记录。
[0113]B)对⑶N记录中一个或者多个URL作随机选择,进行负载均衡,最后将选中的URL返回。
[0114](六)如果没有任何⑶N节点被选中,则返回出错信息。
[0115]不难发现,本发明采用基于静态IP库进行IP调度的方式,提供了多节点之间的动态负载均衡和容灾备份的功能。根据节点优先级和权重进行动态路由选择的功能,根据节点容量情况逐级降级切峰的方式缓解流量大幅度锯齿状波动。本发明可以同时提供多套调度方案,根据访问的内容和频道来实施不同的调度方案,便于对不同的内容实施不同的调度策略以便对不同的业务提供差异化的服务。
【权利要求】
1.一种节点负载的分布式CDN全局调度的方法,其特征在于,包括以下步骤: (1)根据业务类型确定调度方案; (2)根据用户访问调度服务器的客户端IP进行IP定位,确定其所在的IP位置信息; (3)根据确定的调度方案和确定的用户IP位置信息去匹配位置路由策略; (4)根据位置路由策略来选择目标路由策略,从而确定CDN节点; (5)根据确定CDN节点,选择该CDN节点对应的一台或者多台节点内服务器,进行随机负载均衡,最终向用户返回被选中的CDN节点服务器的地址信息,为用户提供CDN访问的服务。
2.根据权利要求1所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(I)包括以下子步骤: (11)建立两个映射表,第一个映射表是内容对应调度方案的映射表,第二个映射表是频道对应调度方案的映射表; (12)根据用户输入的内容查找第一个映射表,确定调度方案,如果没有查到,就根据用户输入的频道查找第二个映射表,确定调度方案。
3.根据权利要求1所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(2)包括以下子步骤: (21)建立两个映射表,第一个映射表是位置表,用于存储基础的位置信息,每个位置信息包含位置ID、运营商、省份和城市四个字段;第二个映射表是IP表,用于存储IP段和位置ID的映射关系,包含IP,MASK,位置ID三个字段; (22)在匹配的时候,根据客户端IP,按照IP库的最长匹配方法,在IP表中查找对应的位置ID,然后根据查找到的位置ID,得到该用户所在的运营商、省份、城市的信息,并用“运营商.省份.城市”来表不成IP位置信息。
4.根据权利要求1所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(3)包括以下子步骤:· (31)建立一个位置路由表,包含位置路由ID、IP位置通配符、调度方案三个字段; (32)根据IP位置信息和调度方案按照通配符匹配的方式进行模糊匹配,按照通配符从短到长匹配算法依次匹配出一个或者多个位置路由ID。
5.根据权利要求4所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(32)中对整个位置路由表进行加载,并建立四层树状结构,其中,第一层为root层,第二层为“运营商”层,第三层为“省份”层,第四层为“城市”层,root层仅有一个节点,该节点表示匹配任何IP位置,剩下的每一层具有多个节点,节点按照节点的Key值根据字典序方式排列。
6.根据权利要求1所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(4)中,一个位置路由策略能够匹配一条或者多条目标路由策略,当匹配出多条目标路由策略时,多条目标路由策略根据权重、优先级、时间段参数、以及当前节点的网络带宽可用容量来进行筛选,从而确定首选CDN节点。
7.根据权利要求6所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(4)包括以下子步骤: (41)创建目标路由表,该表的字段如下:位置路由ID、生效起止时间、优先级、权重;(42)创建⑶N节点表,该表的字段如下ADNfAID,多个⑶N目标URL地址,当前带宽可用容量,当前节点需要被分流的百分比,以及节点的可用状态; (43)根据位置路由ID得到所有对应的目标路由记录,并根据其⑶N节点ID得到⑶N节点表中的相关参数; (44)对目标路由记录按照时间段、可用状态进行筛选,过滤掉节点当前不可用的记录; (45)对于剩余的可用目标路由记录按照优先级进行分组,按照优先级作为分组号进行排序; (46)对分组内的目标路由记录,根据其权重和可用容量百分比,分流百分比三个参数,来进行选择; (47)如果当前分组没有可用的记录,并且当前分组不是最后一个分组,则在溢出表中将每条记录的分流值进行累加,计算得到平均值后作为权重值,进行随机选择,确定是在溢出表还是下一个分组中继续选择目标路由记录;如果当前分组没有可用的服务器,并且当前分组已经是最后的分组,则对溢出表中的记录按照每条记录以权重X (1-分流百分比)来作为权重随机选择的权重参数,在溢出表内进行随机选择,选中的记录返回CDN节点ID。
8.根据权利要求6所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(5)中如果没有可用的CDN节点能够匹配到,则返回步骤(4)获取下一个位置路由策略。
9.根据权利要求1所述的节点负载的分布式CDN全局调度的方法,其特征在于,所述步骤(5)包括以下子步骤 : (51)根据⑶N节点ID,找到对应的⑶N记录; (52)对CDN记录中一个或者多个URL作随机选择,进行负载均衡,最后将选中的URL返回。
【文档编号】H04L12/701GK103825837SQ201410056700
【公开日】2014年5月28日 申请日期:2014年2月19日 优先权日:2014年2月19日
【发明者】王磊 申请人:上海视云网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1