内容分发网络中的内容节点以及内容分发方法与流程

文档序号:15262098发布日期:2018-08-24 21:55阅读:410来源:国知局

本发明涉及内容分发技术领域,更具体地,涉及内容分发网络中的内容节点以及内容分发方法。



背景技术:

在目前主流的ip网络中,常见内容节点主要是指webcache和cdn内容节点(contentdeliverynetwork,内容分发网络)等可以存储互联网内容的网络节点,webcache节点,基于被动式的存储方式缓存内容,当用户第一次访问某内容时,webcache节点缓存该内容在本地,当该内容再次被用户访问时,便可直接从webcache节点本地获取内容对用户进行服务。cdn系统中除了cdn内容节点,还有一个gslb(英文名称:globalserverloadbalance,中文名称:全局负载均衡),目前最常用的是通过cname的方式,使用户的dns解析请求在gslb处响应,gslb可以根据不同的业务类型,选择使用dns调度或者应用层重定向(例如http重定向)的方式将用户的请求引导至“合适”的cdn节点,并由该节点服务用户的请求。

上述内容节点的基本思想都是把用户访问的内容存储于距离用户“更近”的节点上,以缩短用户的访问时延并减少核心网的流量,从而达到改善用户使用体验和减轻核心网压力的目的。而现有的内容节点在本地未命中的情况下,是“回源”获取内容并为用户服务,所谓“回源”即向内容源获取内容,而向内容源获取内容存在核心网压力过大的问题。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的内容分发网络中的内容节点以及内容分发方法。

根据本发明的一个方面,提供一种内容分发网络中的内容节点,包括:

用户请求管理模块,用于接收并解析请求端发送的http请求,获知所请求的内容,并将解析后的http请求发送至本地缓存管理模块,所述请求端包括为内容分发网络中的其他内容节点或用户端;

所述本地缓存管理模块,用于在查询内容节点未缓存该内容时,调用路由表管理模块查询路由表中是否存在该内容的路由表项,当所述路由表中存在该内容的路由表项,将该路由表项中指示的内容节点作为目标内容节点;

代理模块,用于向所述控制器发起注册至内容分发网络的请求,接收所述控制器下发的对路由表项进行添加、删除和/或查询的命令,并将所述命令发送至所述路由表管理模块;

所述路由表管理模块,用于接收控制器下发的路由表项、执行对路由表项进行添加、删除和/或查询的命令,所述路由表项用于指示内容与内容节点间的对应关系;

所述数据下载模块,用于向所述目标内容节点发送获取所述内容的请求以及缓存接收到的所述内容至本地,所述内容通过所述用户请求管理模块发送至请求端。

优选地,所述代理模块还用于:当内容节点未缓存该内容,同时未查询到路由表中存在所述内容的路由表项时,向所述控制器请求该内容的路由表项,以使得所述控制器查询到该内容的路由表项时,将该内容的路由表项发送至内容节点。

优选地,所述数据下载模块还用于:当内容节点未缓存该内容,并且本地缓存管理模块和控制器均未查询到所述内容的路由信息时,向内容源服务器请求所述内容,以使得内容源服务器回源请求内容。

优选地,所述路由表项的key值根据请求端发送的http请求中的url、host以及useragent信息获得,路由表项的内容为对该http请求执行的动作列表,所述动作列表为从其他节点中下载内容、为该http请求添加tos标签以及对该请求做带宽管理中的一种,其中,所述tos标签用于表示执行该请求的优先等级。

优选地,所述代理模块具体用于:

当内容节点启动时,向控制器发起注册请求,所述注册请求中携带内容节点的地址以及缓存替换阈值,所述缓存替换阈值的用于表示所在内容节点的缓存需替换的临界值,以使控制器对内容节点进行缓存替换。

优选地,所述代理模块还用于解析控制器下发的内容节点的缓存及状态的管理命令以及网络连接的管理命令。

优选地,所述路由表中包含若干个哈希桶,每个哈希桶以http请求头中的host哈希值作为键值,每个哈希桶中含有哈希值相同的若干个哈希表项,哈希桶中的路由表项按照预设的优先级进行排序,若优先级相同,则按照路由表项添加的先后顺序进行排序。

优选地,所述添加路由表项的命令中记载了待添加的路由表项所对应的url、host、useragent以及内容节点的地址,所述路由表管理模块执行对路由表项进行添加的命令,具体包括:

计算url、host和useragent的哈希值,查看路由表中是否有相应哈希值的路由表项,若查询到相应的路由表项,则向控制器返回错误信息;若没有查询到相应的表项,则通过host的哈希值找到相应的哈希桶,遍历该哈希桶,当匹配成功时向控制器返回动作列表,若遍历后仍然匹配失败,则向控制器返回空指针。

优选地,所述删除的命令中记载了待删除的路由表项对应的host、url和useragent,所述路由表管理模块执行对路由表项进行删除的命令,具体包括:

计算host、url和useragent的哈希值,查看路由表中有没有相应的路由表项,若没有,则向控制器返回错误信息,如有,则从路由表中删除该路由表项;

所述查询路由表项的命令记载了待查询的路由表项对应的url、host和useragent,所述路由表管理模块执行对路由表项进行查询的命令,具体包括:

计算url、host和useragent的哈希值,通过url、host和useragent的哈希值查找哈希桶,遍历哈希桶直到找到相应的路由表项。

根据本发明的另一个方面,还提供一种内容分发网络中内容节点的内容分发方法,包括:

接收并解析请求端发送的http请求,获知所请求的内容,所述请求端包括为内容分发网络中的其他内容节点或用户端;

当查询本地未缓存该内容时,查询路由表中是否存在该内容的路由表项,当所述路由表中存在该内容的路由表项,将该路由表项中的内容节点作为目标内容节点;

向所述目标内容节点发送获取所述内容的请求,缓存接收到的所述内容并发送至请求端;

其中,所述内容分发方法还包括:

向控制器发起注册至内容分发网络的请求,接收所述控制器下发的对路由表项进行添加、删除和/或查询的命令并执行,所述路由表项用于内容与内容节点间的对应关系。

本发明提出的内容分发网络中的内容节点以及内容分发方法,其中内容节点包括用户请求管理模块,用于接收并解析请求端发送的http请求,获知所请求的内容;本地缓存管理模块,用于在内容节点未缓存该内容时,查询路由表中是否存在该内容的路由表项,当所述路由表中存在该内容的路由表项,将该路由表项中的内容节点作为目标内容节点;代理模块,用于向所述控制器发起注册至内容分发网络的请求;路由表管理模块,用于执行对路由表项进行添加、删除和/或查询的命令;数据下载模块,用于向所述目标内容节点发送获取所述内容的请求以及缓存接收到的所述内容。

附图说明

图1为根据本发明实施例的内容分发网络的网络架构示意图;

图2为根据本发明实施例的内容节点的功能框图;

图3为根据本发明实施例的路由表的组织结构示意图;

图4为根据本发明实施例的内容分发方法示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

为了克服现有技术的上述缺陷,本发明实施例提供了一种内容分发网络中的内容节点,本发明实施例的内容分发网络,也称作为sdcn网络的网络架构沿用了传统sdn的三层架构:转发平面、控制平面以及应用平面。具体地,参见图1,应用平面为应用服务层;控制平面由北向接口、控制功能抽象层、南向接口层共同组成;转发平面,即设备层,承载内容分发网络的数据平面。应用服务层通过北向接口与控制平面交互,控制平面通过南向接口层与数据平面交互。各层在根据自身功能角色增强并扩展了实现内容控制的相应能力的同时,支持现有sdn相应层次的功能。

图2示出了本发明实施例的内容节点的功能框图,如图2所示,包括:

用户请求管理模块201,用于接收并解析请求端发送的http请求,获知所请求的内容,并将解析后的http请求发送至本地缓存管理模块,请求端包括为内容分发网络中的其他内容节点或用户端;

需要说明的是,http请求中包括消息首行中,对内容的请求方法、内容的标识符及使用的协议。在本发明实施例中用户请求管理模块通过解析http请求,就可以获取请求端想要获取的内容。本发明实施例并不限制内容的类型,比如音乐、电影、文本等等,用户请求管理模块在获知所请求的内容后,会把解析后的请求发送到本地缓存管理模块中。

本地缓存管理模块202,用于在查询内容节点未缓存该内容时,调用路由表管理模块,查询路由表管理模块存储的路由表,查询路由表中是否存在该内容的路由表项,当路由表中存在该内容的路由表项,将该路由表项中指示的内容节点作为目标内容节点。

需要说明的是,若本地缓存管理模块查询到内容节点中缓存有相应的内容,则直接将该内容发送至用户请求管理模块,并通过用户请求管理模块返回至请求端,如果内容节点本地并没有缓存该内容,则通过查询路由表中是否有该内容的路由表项,获知该向谁请求内容。

在本发明实施例中,路由表项中了内容和内容节点的对应关系,例如,电影《狮子王》作为一个内容,在路由表项中记录了缓存有该内容的内容节点,这样本地缓存管理模块通过查询路由表,就可以知道哪些内容节点缓存有该内容,这样就可以向缓存有该内容的内容节点发送获取该内容的请求。

代理模块203,用于向控制器发起注册至内容分发网络的请求,接收控制器下发的对路由表项进行添加、删除和/或查询的命令,并将命令发送至路由表管理模块。

需要说明的是,本发明实施例的内容节点通过代理模块接收控制器下发的对本地存储的路由表项进行更新和查询的命令,配合控制器对路由表进行操作。

路由表管理模块204,用于接收控制器下发的路由表项、执行对路由表项进行添加、删除和/或查询的命令。

需要说明的是,路由表管理模块通过代理模块与控制器通信,控制器向内容节点下发路由表项的操作命令,以对内容节点的路由进行调控,当本地缓存内容未命中时,内容节点查询本地的路由表以决定执行何种动作,哪个目的节点下载。

数据下载模块205,用于向目标内容节点发送获取内容的请求以及缓存接收到的内容,内容通过用户请求管理模块发送至请求端。

需要说明的是,在本发明实施例的内容节点的控制平面中,控制器与内容节点进行通信,可以进行l7层的内容控制(l7层为应用层,对于http请求来说,l7层消息是指url、host、useragent),在数据平面中,内容节点又兼具内容存储和内容转发两个功能。

在上述实施例的基础上,代理模块还用于:当内容节点未缓存该内容,同时未查询到路由表中存在该内容的路由表项时,向控制器请求该内容的路由表项,以使得控制器查询到该内容的路由表项时,将该内容的路由表项发送至内容节点。

当内容节点未缓存该内容,并且本地缓存模块和控制器均未查询到内容的路由表项时,向内容源服务器请求内容,以使得内容源服务器回源请求内容。

本发明实施例的内容节点的工作逻辑在于:1)若缓存命中,则直接将本地缓存通过用户请求模块返回给客户端或其他内容节点;2)若返回未命中,这时查询本地路由表,若查到本地路由表项,则去路由表指定内容节点获取资源;3)若未查询到本地路由表项,则通过agent查询控制器,从控制器获得路由信息,进而获取对应的资源,此时还要更新本地路由表(路由表管理模块完成);4)如果控制器也未查到,则直接回源获取内容。

在上述实施例的基础上,路由表项的key值根据请求端发送的http请求头中的url、host以及useragent信息获得,路由表项的内容为对该http请求执行的动作列表,动作列表为从其他节点中下载内容、为该http请求添加tos标签以及对该请求做带宽管理中的一种,其中,tos标签用于表示执行该请求的优先等级。

图3示出了本发明实施例的路由表的组织结构示意图,如图所示,哈希表中含有若干个哈希桶(英文名称:bucket),每个哈希桶以host的哈希值为key值,以哈希桶1为例,哈希桶1采用环形链表组织,具有表项(英文名称:flow_entry)1,表项2以及表项3,表项中的next是链表的指针,即下一个表项的地址,指示下一个表项的位置。表项3指回表项1。

具体地说,路由表项包括了l7层信息存储的是url、host、useragent的哈希值。本发明实施例中路由表的存储方式是以哈希值存储,使用哈希函数来进行哈希运算。

在上述各实施例的基础上,代理模块具体用于:

当内容节点启动时,向控制器发起注册请求,注册请求中携带内容节点的地址以及缓存替换阈值,缓存替换阈值用于表示所在内容节点的缓存需替换的临界值,以使控制器可以对内容节点进行缓存替换。

在上述各实施例的基础上,代理模块还用于解析控制器下发的内容节点的缓存及状态的管理命令以及网络连接的管理命令。

在上述各实施例的基础上,路由表中包含若干个哈希桶,每个哈希桶以http请求中的host哈希值作为键值,每个哈希桶中含有哈希值相同的若干个哈希表项,哈希桶中的路由表项按照预设的优先级进行排序,若优先级相同,则按照路由表项添加的先后顺序进行排序。

在上述实施例的基础上,添加路由表项的命令中记载了待添加的路由表项所对应的url、host、useragent以及内容节点的地址,路由表管理模块执行对路由表项进行添加的命令,具体包括:

计算url、host和useragent的哈希值,查看路由表中是否有相应哈希值的路由表项,若查询到相应的路由表项,则向控制器返回错误信息;若没有查询到相应的表项,则通过host的哈希值找到相应的哈希桶,遍历该哈希桶,当匹配成功时向控制器返回动作列表,若遍历后仍然匹配失败,则向控制器返回空指针。

在上述实施例的基础上,删除的命令中记载了待删除的路由表项对应的host、url和useragent,路由表管理模块执行对路由表项进行删除的命令,具体包括:

计算host、url和useragent的哈希值,查看路由表中有没有相应的路由表项,若没有,则向控制器返回错误信息,如有,则从路由表中删除该路由表项;

查询路由表项的命令记载了待查询的路由表项对应的url、host和useragent,路由表管理模块执行对路由表项进行查询的命令,具体包括:

计算url、host和useragent的哈希值,通过url、host和useragent的哈希值查找哈希桶,遍历桶直到找到相应的路由表项。

根据本发明的另一个方面,还提供一种内容分发网络中的内容节点的内容分发方法,参见图4,该方法包括:

401、接收并解析请求端发送的http请求,获知所请求的内容,请求端包括为内容分发网络中的其他内容节点或用户端;

402、当查询本地未缓存该内容时,查询路由表中是否存在该内容的路由表项,当存在该内容的路由表项,将该路由表项中的内容节点作为目标内容节点;

403、向目标内容节点发送获取内容的请求,缓存接收到的内容并发送至请求端。

本发明实施例的内容分发方法还包括:

向控制器发起注册至内容分发网络的请求,接收控制器下发的对路由表项进行添加、删除和/或查询的命令,并将命令发送至路由表管理模块;

接收控制器下发的路由表项、执行对路由表项进行添加、删除和/或查询的命令,路由表项用于内容与内容节点间的对应关系。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1