发明内容
为了克服现有的混合CDN-P2P网络在内容请求、分发和放置过程中均在服务器上进行,内容的命中率低,相应时间长,容易造成网络的堵塞,服务质量的下降的技术问题,本发明提出一种基于边缘缓存的CDN-P2P网络的内容副本放置方法,根据边缘缓存节点的CDN-P2P网络中的内容流行度互异性的进行内容副本放置,最大程度的减少了主干网络的拥堵,充分提高了资源的响应能力。
本发明提出的CDN-P2P结构中的P2P网络只负责资源的存储,同时边缘缓存节点是直接与P2P网络连接的,相当于边缘缓存节点和P2P网络之间还是一个CS架构的连接形式。
为达到上述目的,本发明采用的技术方案为:
一种基于边缘缓存的CDN-P2P网络的内容副本放置方法,其特殊之处在于,包括以下步骤:
步骤1、对所有内容的特征属性进行定义;
所述内容的特征属性是指区别于其他内容,用于辨识其自身独特特征的信息,对内容进行划分;
步骤2、根据边缘缓存节点间的相似度,将边缘缓存节点划分为多个不同的域;所述边缘缓存节点是一种放置在用户的生活场所中,具有缓存功能的CDN节点;
步骤3、确定每个域的管理节点;
所述管理节点是根据节点的存储空间和节点的带宽决定,用于收集内容副本的全部信息并上传至后台系统,并执行内容副本放置;
步骤4、根据内容的特征属性计算区域CDN服务器中内容间的相似度,将内容分成多个类别;
步骤5、根据域和区域CDN服务器中的内容间相似度,匹配每个域与区域CDN服务器中的不同类的内容;
步骤6、根据域与内容间的相似度,筛选需要放置的内容;
步骤7、放置内容副本;
步骤8、更新域管理节点、目录服务器中的内容列表;
步骤9、更新网络系统中存储的边缘缓存节点剩余空间信息。
进一步地,所述步骤2具体为:
步骤2.1、计算边缘缓存节点的特征属性;
定义边缘缓存节点f,共享文件列表中包含n个文件,每个文件有N位特征属性,节点f的特征属性为:
其中,
为边缘缓存节点f
i中n个共享文件的内容特征属性在第N位的属性值的叠加值;
步骤2.2、用采余弦相似度方法计算边缘缓存节点间的相似度,并将相似度大于边缘缓存节点间相似度阈值τs的边缘缓存节点组成一个域;
所述边缘缓存节点间的相似度Sim(a,b)按下式计算:
其中,fa和fb分别为边缘缓存节点a和边缘缓存节点b的特征属性向量。
进一步地,所述步骤3具体为:
步骤3.1、选出域中剩余存储空间S和可用平均带宽AB符合下列条件的边缘缓存节点:
1)边缘缓存节点的剩余存储空间S大于剩余存储空间阈值S0;
2)边缘缓存节点的可用平均带宽A大于可用平均带宽阈值B0;
步骤3.2、计算边缘缓存节点剩余能力SY,选出剩余能力最大的作为管理节点;
SY=(S-S0)×(AB-B0)。
进一步地,所述步骤4具体为:
采用余弦相似度方法计算内容间的相似度,并将相似度均大于内容间相似度阈值τc的分为一类;
所述内容间的相似度Sim(o,p)按下式计算:
其中,Co和Cp分别为内容o和内容p的特征属性向量。
进一步地,所述步骤5具体为:
定义步骤2中划分的一个域为Y域,匹配了A、B两类内容,且A类排序在前;步骤5.1、计算Y域的综合特征属性向量FY,
其中,
为Y域中所有边缘缓存节点在第一个内容特征属性上的累加;步骤5.2、计算A类内容的综合特征属性向量C
A,
其中,
为A类内容中所有内容在第一种内容特征属性上的累加;
步骤5.3、采用余弦相似度方法计算Y域和A类内容的相似度,并选择相似度大于域和内容间相似度阈值τY的内容进行匹配;
所述Y域和A类内容间的相似度Sim(FY,CA)按下式计算:
步骤5.4、将匹配成功的类别内容按照Y域的综合特征属性进行降序排列并将结果存储。
进一步地,所述步骤6具体为:
步骤6.1、计算A、B两类的内容的流行度;
类别中第k个内容的流行度P(k),
其中,Mk为第k个内容被请求的总次数;Q为所有内容的请求次数;
T
k为第k个内容第一次被访问的时间;
为第k个内容最近一次被访问的时间;
步骤6.2、选出A类中流行度高于阈值τA的内容,并降序排列后分别存入C_P[];
步骤6.3、删掉B类中与A类重复的内容,选出B类中流行度高于阈值τB的内容,并降序排列后分别存储。
进一步地,所述步骤7中放置内容副本具体方法为:
步骤7.1、计算Y域中的边缘缓存节点对A类内容的相似度,并对边缘缓存节点降序排序将结果存储;
边缘缓存节点fi对A类内容的相似度Sim(fi,CA)按下式计算:
其中,fi为Y域中的第i个边缘缓存节点;
步骤7.2、依次进行A类中内容副本放置;
7.2.1、放置A类中第一个内容副本;
从Y域中的边缘缓存节点开始,判断该边缘缓存节点中有无与A类中第一个内容相同的内容,若有,则判断下一个边缘缓存节点;
若无,则判断该边缘缓存节点是否有足够的空间放置第一个内容,若足够,则直接缓存放置第一个内容的副本;
若存储空间不足够,则第二个边缘缓存节点中有无此内容相同的内容且是否有足够的空间放置此内容,依次类推……直到找到能缓存该内容的边缘缓存节点;
7.2.2、若Y域中的边缘缓存节点均不能放置或边缘缓存节点已存在A类内容副本,则不缓存该内容;
7.2.3、按照步骤7.2.1和7.2.2存放第一个内容的方法依次进行A类中其他所有内容副本放置;
每次放置均从Y域中的第一个边缘缓存节点开始,判断边缘缓存节点有无此内容相同的内容且是否有足够的空间放置此内容,能够存储内容副本并且没有存A类中的其它内容副本,则缓存该内容副本;
按照相同的方法,依次存放A类中其它所有的内容;
步骤7.3、计算Y域中的边缘缓存节点对B类内容的相似度,并降序排序将结果存储;
步骤7.4、进行B类内容副本放置。
与现有技术相比,本发明具有的有益技术效果如下:
1、本发明通过考虑内容和边缘缓存节点的属性特征,将不同的内容分为不同的类,不同的边缘缓存节点分为不同的域,然后根据不同的域与不同类别的内容的相似程度进行配对,最后将配对成功的类别内容按照内容的流行度将内容分配给不同的边缘缓存节点,充分提高了内容的命中率,降低了内容的响应时间。
2、本发明通过综合考虑每个内容的请求次数、每个内容的被请求频率、内容的第一次被访问的时间以及最近被访问的时间,来决定内容的流行度的高低从而减小了网络的堵塞,提高了网络的服务质量。
3、本发明提出的基于边缘缓存的CDN-P2P网络中,边缘缓存节点之间是以P2P的形式连接的,各个边缘缓存节点之间可以共享资源;边缘缓存节点所辖用户端可直接从边缘缓存节点获取资源,也可从CDN服务器获取,最大程度的减少了主干网络的拥堵,充分提高了资源的响应能力。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施方式对本发明提出的一种基于边缘缓存的CDN-P2P网络及其缓存方法作进一步详细说明。本领域技术人员应当理解的是,这些实施方式仅仅用来解释本发明的技术原理,目的并不是用来限制本发明的保护范围。
本发明基于的边缘缓存节点的CDN-P2P网络包括前台系统和后台系统;所述的前台系统由家庭CDN边缘缓存节点(家庭内容服务器)简称边缘缓存节点组成,它一方面用于用户信息的存储,一方面作为CDN边缘缓存设备存储流媒体资源,用户则就近从边缘服务器获取服务,这样就提高了用户获取服务的速度。
边缘缓存节点是一种部署在用户生活场所中的专用家庭盒子,与传统CDN相似,具有一定的缓存功能,可提前将一些文件存储在其存储空间中。若边缘缓存节点所辖用户请求的文件已被边缘缓存节点缓存,则可以直接从边缘缓存节点获取,因此可以显著降低网络开销和网络时延。
边缘缓存节点之间以逻辑上P2P方式通信用户需要的内容可以从边缘缓存节点获取,如果有的片段在边缘缓存节点中没有,用户也可以从边缘CDN甚至源服务器获取。
如图1所示,本发明提供的基于边缘缓存的CDN-P2P网络中的内容副本放置方法,是根据边缘缓存节点的CDN-P2P网络中的内容流行度互异性的进行内容副本放置,包括以下步骤:
步骤1、对所有内容的特征属性进行定义;
所述内容特征属性是指区别于其他内容,用于辨识其自身独特特征的信息,对内容进行划分;所述边缘缓存节点是一种家庭CDN盒子,是一种放置在用户的生活场所中,具有缓存功能的CDN盒子;
步骤2、根据边缘缓存节点间的相似度,划分边缘缓存节点为多个不同的域;
步骤3、确定每个域的管理节点;
所述管理节点是根据节点的存储空间和节点的带宽决定,用于收集内容副本的全部信息并上传至后台系统;
所述管理节点用于执行内容副本放置;
步骤4、根据内容的特征属性计算根据区域CDN服务器中内容的相似度,将内容分成多个类别;
步骤5、根据边缘缓存节点中的域和区域CDN服务器中的内容间相似度,匹配每个域与区域CDN服务器中的不同类的内容;
步骤6、根据域与内容间的相似度,筛选需要放置的内容;
步骤7、放置内容副本;
步骤8、更新域管理节点、目录服务器中的内容列表;
步骤9、更新运营管理模块中的家庭边缘缓存节点剩余空间信息。
如图2所示,后台系统包括内容路由模块、目录服务器、内容管理模块和运营管理模块。
内容路由模块主要完成调度控制,把访问需求调度到最优的边缘缓存节点。
目录服务器主要维护系统中可服务的视频信息列表,即系统内文件分片分布情况,包括资源名称、贡献资源的用户地址等,比如当前系统中有哪些视频文件,当前在线边缘缓存节点上拥有哪些视频文件分片可向其他节点提供。
内容管理模块主要用于,一方面,边缘缓存节点每隔一段时间或者系统接收到一定次数的内容请求指导在边缘缓存节点执行内容副本放置算法;另一方面,边缘服务器根据P2P用户的请求,更新内容服务器中内容列表。
运营管理模块包括节点管理功能和网络管理功能等;节点管理功能:通过接收边缘缓存节点定时发送的心跳包获取并管理自治域内的对等节点的基本信息,包括该边缘缓存节点的网络地址,是否在线,节点内存占用情况,自身上传下载带宽、插件更新、版本更新等信息。这些信息可以用于对系统内节点分布情况进行管理;网络管理功能:如CDN系统的网络拓扑管理、故障管理、网络设备管理和链路监控,为管理员提供集中化的管理操作界面。
图3是本发明的方法可应用的一个场景图。系统中包括一个源服务器和一个边缘服务器,在边缘服务器下面连接着一定数量的家庭边缘缓存节点,这些家庭边缘缓存节点构成了一个由不同域组成的P2P网络。根据用户的喜好将边缘缓存节点分成不同的域,采用余弦相似度方法计算节点间的相似度,同时设定阈值τs,当边缘缓存节点之间的相似度大于阈值时就可以组成一个域。每个家庭边缘缓存节点都可以连接不同数量的用户。
放置过程大致包括:首先根据用户的喜好不同将边缘缓存节点分成不同的域,然后根据内容的特征属性的不同将内容分成不同的类,接着根据域和类的属性进行配对,最终将配对成功的类的内容按照内容的流行度的不同依次在域中进行放置。
由于本发明的家庭边缘缓存节点只涉及存储功能,所以就会大大提高P2P网络的存储能力,同时家庭边缘缓存节点的移动性相比用户端就会弱很多,在线时间相比用户端也大大提升。所以相比用户端组成的P2P网络,家庭边缘缓存节点组成的P2P网络的性能明显会更好。
图4是本发明实施例不同类的内容和不同偏好的域的匹配流程图包括以下计算步骤:
步骤1、首先对内容管理模块中的所有内容的特征属性进行定义。
内容的特征属性的定义是在后台系统的内容管理模块进行的,内容特征属性是指内容区别于其他内容,可以辨识其自身独特特征的信息,可以用来对内容进行划分,例如,电影可以划分为喜剧、爱情、科幻等特征,在选择具体的内容属性特征时需要根据具体的场景进行选择,避免选择无用冗余属性定义。比如将电影分为N=19种类型特征属性,以一串连续的0,1数字表示该文件的特征属性序列,对应位置为1表示文件具有该类型的特征属性,为0表示文件不具有该类型的特征。即如果19种电影类型的第一位代表喜剧类型,如果某电影有喜剧属性,则该电影项目特证中的第一位即用1表示,比如,对于项目i的属性特征信息可以为(1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0)。
步骤2、根据边缘缓存节点的属性特征将边缘缓存节点分成不同的域。
2.1)将所有的边缘缓存节点存储到F_n_BS[]中。
2.2)计算F_n_BS[]中第一个边缘缓存节点和其他边缘缓存节点的相似度,将相似度大于事先给定的阈值的边缘缓存节点存储到Y_n[]中组成一个域。如果第一个边缘缓存节点和其他边缘缓存节点的相似度都不大于阈值,则第一个边缘缓存节点自己组成一个域。
步骤2.2)的计算全在后台系统的内容管理模块进行的。首先定义了内容的特征属性后,需要提取边缘缓存节点偏好特征,即获取边缘缓存节点对于属性空间中各个属性的偏好值。边缘缓存节点偏好属性的基础数据来源包括边缘缓存节点拥有的内容的属性特征信息,边缘缓存节点注册时填写的信息以及边缘缓存节点的历史操作数据。代表该边缘缓存节点的综合兴趣偏好,而非对某个具体内容的特征属性。边缘缓存节点偏好特征是建立在边缘缓存节点拥有的资源属性基础上的,对于CDN-P2P系统中的边缘缓存节点f来说,假设其共享文件列表中包含n个文件,边缘缓存节点f的偏好特征属性定义如下:
其中,
代表边缘缓存节点f
i所有共享文件的内容特征属性在第N位的属性值的叠加值,其余分量值的计算类似。
采用余弦相似度方法计算节点间的相似性,同时设定阈值τs,当边缘缓存节点之间的相似度大于阈值时就可以组成一个域。相似性的计算公式为:
其中,Sim(a,b)代表两个边缘缓存节点之间的相似性,fa和fb分别代表节点a和节点b的偏好特征向量。
2.3)将剩余的没有组成域的边缘缓存节点重新存储到F_n_BS[]中,继续按照步骤2.2)中的步骤执行,依次类推,直到F_n_BS[]中的边缘缓存节点个数为0时结束。
步骤3、确定每个域的管理节点,管理节点是由预先根据节点的存储空间以及节点的带宽来决定。管理节点收集内容副本的全部信息并上传至后台系统。
每个域内的管理节点是内容管理模块根据运营管理模块提供的数据来确定。管理节点主要负责收集该域内所有副本的信息,比如:副本的位置,副本的访问次数和频率以及内容副本的响应时间等。同时辅助内容管理模块计算部分内容。
根据节点的剩余存储空间和节点的带宽来选择域管理节点,首先节点的剩余存储空间和可用带宽必须大于事先给定的阈值S0和B0,然后计算剩余能力SY,选出域Rd中剩余能力最大的作为管理节点。计算公式如下:
SY=(S-S0)×(AB-B0)
其中AB表示每个节点的可用平均带宽,可以用节点上的等候队列的长短来和计算,等待的队列越长就说明可以的平均带宽就会越少,S表示节点的剩余存储空间的大小。
步骤4、在区域CDN服务器中,根据内容的属性将区域CDN服务器中的内容分成不同的类。
4.1)将所有的内容存储到F_l_CS[]中。
4.2)计算F_l_CS[]中第一个内容和其他内容的相似度,将相似度大于事先给定的阈值的内容存储到L_l[]中组成一类,如果第一个内容和其他内容的相似度都不大于阈值,则第一个内容自己组成一类。
步骤4的计算全在后台系统的内容管理模块进行的。采用余弦相似度方法计算内容间的相似性,相似性的计算公式为:
其中,Sim(o,p)代表两个内容之间的相似性,Co和Cp分别代表内容o和内容p的偏好特征向量。
设定阈值τc,选择相似度大于阈值的内容作为一类。
4.3)将剩余的没有组成类的内容重新存储到F_l_CS[]中,继续按照4.2)中的步骤执行,依次类推,直到F_l_CS[]中的内容个数为0时结束。
步骤5、根据不同的域的边缘缓存节点的喜好,将每个域与区域CDN服务器中的不同类的内容进行配对,即将这若干个类中的若干内容存入Y域中,并将选好的这几类进行降序排列。假设给Y域成功匹配了A、B两类内容,且A类排序在前。
根据不同的域的边缘缓存节点的喜好,将每个域与区域CDN服务器中的不同类的内容进行配对。
5.1)初始化类和域的编号等于1,以及域和类的总个数N和L。
5.2)计算类L_l[]和第一个域Y_n[]之间的相似度,当相似度大于事先设定的阈值时匹配成功,否则l++,计算下一个内容与第一个域的相似度,直到l>L,即所有的类都与第一个域匹配过结束。然后n++,也就是计算类L_l[]和第二个域Y_n[]之间的相似度,以此类推,直到n>N结束(也就是所有的域都和类匹配过结束)。
匹配过程也是在后台系统的内容管理模块进行的。提取每一个域的综合特征属性向量,可以用下面的公式表示:
其中,F
Y表示Y域的综合特征属性向量,
表示表示Y域中所有边缘缓存节点在第一种内容特征属性上的累加。
提取每一类内容的综合特征属性向量,可以用下面的公式表示:
其中,C
A表示A类内容的综合特征属性向量,
表示A类内容中所有内容在第一种内容特征属性上的累加。
计算每一个域和每一个类之间的相似性,选择相似性大于阈值τY的内容进行匹配。
其中,Sim(FY,CA)表示Y域和A类内容之间的相似性,FY表示Y域的综合特征属性向量,CA表示A类内容的综合特征属性向量。
并将匹配成功的类按照域的喜好程度进行降序排列并将结果存储到C_Lj[]中,其中j表示C_Lj[]中数据的下标索引,最大为匹配成功的内容类别的个数减一,(前提下表索引是从0开始)。
步骤6、分别计算A、B两类中所有内容的流行度,并分别进行降序排列。同时分别选出流行度高于阈值τA和τB的若干个内容。记A类选出num_A个,B类选出num_B个内容。
内容管理模块分别计算A、B类的内容的流行度,流行度的计算公式如下式:
其中,P(k)表示第k个内容的流行度,M
k表示内容管理模块收到第k个内容被请求的总次数;Q表示内容管理模块收到所有内容的请求次数;T
k表示第k个内容第一次被访问的时间,
表示第k个内容最近一次被访问的时间。
A类选出流行度高于阈值τh的内容并进行降序排列分别存入C_P[],然后将B类中与A类重复的内容删掉,选出流行度高于阈值τh的内容并进行降序排列分别存入C_P[]。阈值是根据匹配成功的域中的边缘缓存节点的数量确定的,基本保证每个边缘缓存节点都可以放置此类中的一个内容。
步骤7.1、先放置A类选出num_A个内容到Y域中。
Y域的管理节点根据匹配成功的类,计算Y域中的边缘缓存节点对A类中内容的偏好程度也可以说是相似度,边缘缓存节点对内容的偏好程度可以用下面的公式计算:
其中,fi表示Y域中的第i个边缘缓存节点,CA表示A类内容的综合特征属性向量;Sim(fi,CA)表示边缘缓存节点fi对A类内容的偏好程度。
根据边缘缓存节点对A类内容的偏好程度对边缘缓存节点进行降序排列并将结果存储在F_B[]中。
步骤7.2、把Y域中的边缘缓存节点按照对A类内容的喜好程度进行降序排序,依次进行A类中内容副本放置。
7.2.1、进行内容副本放置,首先放置A类中的第一个内容。从Y域的第一个边缘缓存节点开始,判断该边缘缓存节点中有无与此内容相同的内容,如果有,则判断下一个边缘缓存节点;如果没有,则判断该边缓存缘节点是否有足够的空间放置此内容,如果可以,则直接放;如果不可以,则判断第二个边缘缓存节点中有无此内容相同的内容且是否有足够的空间放置此内容,依次类推……直到找到能缓存该内容的边缘缓存节点。
7.2.2、如果Y域中的边缘缓存节点都不能放置则不缓存该内容,如果边缘缓存节点中有该内容则不缓存该内容。
7.2.3、按步骤7.2.1和7.2.2存放第一个内容的方法存放第二个内容。从第一个边缘缓存节点开始,判断哪个边缘缓存节点没有存A类中的第二个内容并且能够存下该内容,则进行缓存第二个内容。按照相同的方法,依次存放A类中其它所有的内容。
步骤7.3、把Y域中的边缘缓存节点按照对B类内容的喜好程度进行降序排序。
步骤7.4、以放置A类内容的方法放置B类中的内容。
图5是是本发明实施例提供的步骤7内容副本放置流程图,内容放置流程可以总结为:
a)内容放置是在域管理节点中进行的,首先初始化内容的编号k=1,匹配成功的类的编号j=1,每个类中拥有内容的个数H(类别不同H的数值也就不同,H等同于步骤7.1中的num_A)匹配成功的类的总数L,域中边缘缓存节点的编号i=1,域中边缘缓存节点的总数Z(域不同Z的数值也会就不同)以及边缘缓存节点的剩余存储空间F_B[i].size;
b)查看类的编号j是否大于等于匹配成功的类的总数L,如果是进入h)否则进入c);
c)计算边缘缓存节点对内容的偏好程度Sim(fi,CA),根据需要放置的类别对Y域中的边缘缓存节点进行降序排列存储到F_B[]中;
d)查看边缘缓存节点有没有存储过此类中的其他内容,如果没有则进入e)否则i自加1;
如果i小于Y域中的边缘缓存节点总数Z则重新进入d)否则j自加1,如果j小于L则进入c)否则进入h)
e)判断内容C_P[k]是否和边缘缓存节点F_B[i]中已经拥有的内容有重复,如果有,则此类内容的索引数k自加1,否则进入f);
如果k大于等于此类内容的总数H则j自加1,否则进入e);
如果j小于L则进入(c)否则进入h);
f)判断内容C_P[k].size是否小于等于F_B[i].size,如果是则将内容C_P[k]拉到边缘缓存节点F_B[i]上,同时k自加1,否则i自加1;
如果k大于等于此类内容的总数H,j自加1,否则,进入e);
如果j小于L则进入c)否则进入h);
如果i小于Y域中的边缘缓存节点总数Z则重新进入d)否则j自加1;
如果j小于L则进入c)否则进入h);
h)结束放置。
步骤8、更新域管理节点、目录服务器中的内容列表。
更新域管理节点、目录服务器中的内容列表。是在后台系统的内容管理模块和目录服务器模块完成的。
步骤9、更新运营管理模块中的家庭边缘缓存节点剩余空间信息。
更新运营管理模块中的家庭边缘缓存节点剩余空间信息是在后台系统的运营管理模块完成的。
需要说明的是,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。