一种基于多播技术的云内容分发方法、装置与流程

文档序号:14045561阅读:135来源:国知局

本发明涉及云内容分发网络领域,具体是一种基于多播技术的云内容分发方法、装置。



背景技术:

云内容分发网络将源站内容分发至全国所有的节点,可以有效缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性,解决网络带宽小、用户访问量大、网点分布不均等问题。目前,使用云内容分发网络对数据内容进行分发,虽然与传统的内容分发网络相比可以节省大量运营费用,但随着云存储内容分发网络的不断发展,内容分发代价大,分发能耗高,用户服务质量差等问题越来越严重,传统的内容分发能耗优化策略已不能适应云存储分发,因此寻找一种能耗优化的分发方法成为热点。



技术实现要素:

针对现有技术中存在的不足,本发明提供了一种基于多播技术的云内容分发方法,通过最短距离的关键节点选取策略,使云内容分发尽可能地覆盖整个网络,结合最小化分发代价的云内容放置多播路由选择策略,节省了云内容副本分发代价。

本发明的技术方案为:

一种基于多播技术的云内容分发方法,包括:

接收云站点的节点,建立节点集,将节点集分成若干子集,所述节点采用坐标表示;

根据每个子集的平均坐标,利用最短欧式距离的方法确定每个子集的关键节点;

将云站点中的源服务器节点作为多播组组长节点,关键节点作为多播组成员节点;

由多播组组长节点向成员节点发送广播消息,成员节点根据所述广播消息确定云内容的分发路径,按照所述分发路径传送云内容。

进一步的,将节点集分成若干子集包括:

采用K-Canopy方法确定分组数量,根据所述分组数量将节点集分成若干个子集。

进一步的,采用K-Canopy方法确定所述节点集中的分组数量包括:

(31)初始化阈值T1,T2,其中T2为节点集中所有节点的平均距离,T1为两倍的T2,初始化k为0;

(32)若节点集不为空,则从节点集中随机选取一个节点r0作为中心,并将k的值加1;

(33)计算节点集中其余节点到r0的距离d,如果d小于T2,则将该节点归到以r0为中心的子集中,并将该节点从节点集中删除;如果d大于T2小于T1,则将该节点归到以r0为中心的子集中;如果d大于T1则不做操作;

(34)重复步骤(31)-(33),直到节点集为空,得到分组数量k。

进一步的,成员节点根据所述广播消息确定云内容的分发路径包括:收到广播消息的成员节点被激活,在被激活的成员节点之间建立以使分发能耗最小化为目的分发路径。

进一步的,建立以使分发能耗最小化为目的分发路径包括:

被激活的成员节点作为发送节点,向其余成员节点发送请求信息,请求与其余成员节点建立连接;

收到该请求信息的成员节点判断其自身是否为最优节点,若为最优节点,则按照反向路由向发送节点回复该请求信息;

当发送节点收到的回复数量大于等于1时,在发送节点与离其自身最近的成员节点之间建立唯一路径,遍历每一成员节点,形成分发路径。

进一步的,所述最优节点的选择包括:比较其自身到多播组组长节点的距离是否比发送节点到多播组组长节点的距离小,如果不是,则判断为非最优节点;如果是,则查看其自身是否收到过相同发送节点发送来的请求信息,如果没有收到,则判断为最优节点,如果有收到,比较历史请求信息,选择路径长度最短和跳数最小的发送节点,并按照反向路由向发送节点回复该请求信息。

进一步的,遍历每一成员节点包括:确定所述唯一路径的上一跳节点和下一跳节点,将所述路径发送给下一跳节点。

进一步的,还包括在所述分发路径上加入中继节点,若该中继节点与分发路径形成环路,则删除该环路。

本发明还提出了一种存储装置,存储有多条指令,所述指令由处理器加载并执行以下处理:

接收云站点的节点,建立节点集,将节点集分成若干子集,所述节点采用坐标表示;

根据每个子集的平均坐标,利用最短欧式距离的方法确定每个子集的关键节点;

将云站点中的源服务器节点作为多播组组长节点,关键节点作为多播组成员节点;

由多播组组长节点向成员节点发送广播消息,成员节点根据所述广播消息确定云内容的分发路径,按照所述分发路径传送云内容。

本发明在上述存储装置的基础上还提出了一种基于多播技术的云内容分发装置,包括处理器,用于实现各指令;以及存储装置,用于存储多条指令,所述指令由处理器加载并执行以下处理:

接收云站点的节点,建立节点集,将节点集分成若干子集,所述节点采用坐标表示;

根据每个子集的平均坐标,利用最短欧式距离的方法确定每个子集的关键节点;

将云站点中的源服务器节点作为多播组组长节点,关键节点作为多播组成员节点;

由多播组组长节点向成员节点发送广播消息,成员节点根据所述广播消息确定云内容的分发路径,按照所述分发路径传送云内容。

本发明的有益效果:

本发明通过基于最短距离的关键节点选取策略,使云内容的副本分发尽可能地覆盖整个网络,通过最小化分发代价的副本放置多播路由选择策略,节省了副本分发代价。该方法构建了一棵连接所有关键节点的分发树,副本内容只需沿着分发树分发,与现有的云内容分发网络相比,能够有效减少系统的消息复杂度,降低能耗,提高用户的服务质量。

附图说明

附图1为本发明的方法流程图。

具体实施方式:

下面结合附图与实施例对本发明作进一步说明:

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

本发明的一种典型实施例是:

如图1所示,本发明的实施例首先输入云内容分发网络中所有云站点的坐标集合R,然后通过K-Canopy算法确定分组数量个数k,随后利用K-Means聚类将整个网络分成k个子集,也可以成为簇,基于最短距离的关键节点选取算法对每个簇选出一个关键节点,即关键节点,我们用M(M0,M1,M2,...,Mk)表示所有的第一关节按节点集合。

本实施例中确定分组数量的方法包括:

首先初始化阈值T1,T2,其中T2为节点集中所有节点的平均距离,T1为两倍的T2,初始化k为0;

然后若节点集不为空,则从节点集中随机选取一个节点r0作为中心,并将k的值加1;

接着计算节点集中其余节点到r0的距离d,如果d小于T2,则将该节点归到以r0为中心的子集中,并将该节点从节点集中删除;如果d大于T2小于T1,则将该节点归到以r0为中心的子集中;如果d大于T1则不做操作;

最后重复上述步骤,直到节点集为空,得到分组数量个数k。

分组数量确定之后,根据分组数量将节点集分成多个子集,计算每个子集的平均坐标值,找到离平均坐标欧式距离最近的节点作为每个子集的关键节点,也就是关键节点。其中M0表示源服务器节点,M1,M2,...,Mk表示选出的关键节点

确定好关键节点之后,我们根据最小化分发代价的云内容副本放置多播路由选择策略建立一棵连接所有关键节点的分发树,此过程中,我们选择源服务器节点作为该分发树的组长节点,选出的关键节点作为多播成员节点,通过为每一个成员节点建立一条连接到其最近邻居成员节点的方式,建立一棵连接所有多播组成员节点并且允许中继节点加入的分发树。

下面我们主要介绍通过多播路由选择建立一棵连接所有多播成员节点的分发树的具体过程。

步骤1:源服务器节点作为多播组组长节点,选出的关键节点作为多播组成员节点。组长节点发送广播消息唤醒所有的成员节点。

此过程中广播消息的格式为:组长节点地址,目标节点地址#1,目标节点地址#2...

接收到该消息的节点如果是成员节点,每一成员节点具有唯一的多播路由表,当收到该广播信息后,更新自己的多播路由表,将组地址设置为该多播组的组地址,将多播组组长地址设置为该多播组的组长地址。如果不是成员节点,则继续转发该报文,直到所有多播组成员节点都被激活。

多播路由表包含以下信息:多播组组ID,多播组组长地址,目的节点地址,下一跳地址

步骤2:每个多播组成员节点将自身作为发送节点,发送RREQ_JOIN请求信息,也可以是请求报文。

RREQ_JOIN报文格式为:多播组组ID,发送节点地址,节点序列,路径长度,跳数,上一跳节点地址.

步骤3:收到该请求信息的成员节点判断其自身是否为最优节点,若为最优节点,则按照反向路由向发送节点回复该请求信息;

最优节点的判断采用以下方法:更新该消息的路径长度为路径长度加上一跳到当前节点的路径长度;将跳数加1;将自己加入节点序列,继续转发该报文;检查自己的多播路由表,看自己是否是发送节点想要加入的多播组的组成员节点即自己的多播组组ID是否与发送节点的组ID相同,如果是,比较自己到源节点的距离是否比发送节点到源节点的距离小,如果自己到源节点的距离是否比发送节点到源节点的距离小,那么检查自己是否收到过相同发送节点发送来的RREQ_JOIN报文,如果有,比较二者的路径长度,以及到达发送节点的跳数,我们选择路径长度最短和跳数最小的RREQ_JOIN,如果该节点择优完毕,就按照RREQ_JOIN发来时所携带的反向路由信息向发送节点发送RREP_J。

RREP_J报文格式为:多播组组ID,发送节点地址,应答节点地址,节点序列,路径长度,跳数。

RREP_J在沿反向路径传播的同时,沿途节点在其单播路由表中添加该节点到该多播组的路径信息,其中源节点地址填该节点自身地址,目的节点地址填发送RREQ_JOIN的发送节点地址。

单播路由表包含以下信息:源节点地址,目的节点地址,上一跳地址,下一跳地址

步骤4:发送节点在广播RREQ_JOIN一段时间后,等待RREP_J,如果接收到数量大于1的RREP_J,那么发送节点就需要进行择优过程,选择离自己最近的多播组成员节点发送来的RREP_J。此过程中,如果没有成员节点到源节点的距离比发送节点到源节点的距离小,那么该发送节点直接与源节点建立链接。

步骤5:在择优过程完成后,发送节点就已经选定了到达多播组的路径。那么发送节点就按逆向路由向离自己最近的多播成员节点发送MACT_Confirm消息,收到消息的多播成员节点则发送MACT路由激活信息,激活一条从该成员节点到发送节点的路径,添加多播路由表中目的节点地址为发送节点的地址,下一跳地址为到达发送节点的下一跳节点地址,同时收到MACT信息的邻居节点在单播路由表内添加一栏信息<Mj1,Mj2,PHj,NHj>,Mj1,Mj2分别表示发送MACT消息的成员节点地址以及需要接收该MACT消息的成员节点地址,PHj,NHj分别表示当前节点到达目的节点的上一跳以及下一跳。

MACT_Confirm消息的格式为:源节点地址,目的节点地址,节点序列

MACT消息的格式为:源节点地址,目的节点地址,节点序列

进一步的,对于一个中继节点u,如果u是多对成员节点对共用的中继,那么有可能会有环路产生,本实施例中,采用发送MACT_Eliminate消息取消环路,具体包括:

如果中继节点u是多组接收节点对共用的中继,那么将有可能产生环路,这一过程检查是否存在这样的环路,并取消环路。

如果中继节点u是k组接收节点对的中继,这些节点对表示为(M11,M12),(M21,M22),...,(Mk1,Mk2),我们假设Mi1是比Mi2(1≤i≤k)离源节点更近的多播组成员节点,中继节点记录了从Mi1到Mi2的路径中它的上一跳和下一跳,分别用PHi和NHi表示。随机选择一组接收节点对(Mj1,Mj2),保持信息(Mj1,Mj2,PHj,NHj)不变,对于其他的(Mi1,Mi2)对,当Mi1≠Mj1,中继节点u将单播路由表的信息修改为(Mj1,Mi2,PHj,NHi),即将源节点修改为保留的路径的源节点,上一跳修改为保留的路径中中继节点的上一跳。最后发送MACT_Eliminate消息<Mi1,Mi2,PHi>。

收到MACT_Eliminate消息的节点w如果是上一跳节点PHi且该节点非多播成员节点,则做以下操作:修改MACT_Eliminate消息的PHi为从Mi1到Mi2路径上w节点的上一跳;继续发送MACT_Eliminate消息给上一跳;删除单播路由表中w节点的路由信息<Mi1,Mi2,PHi,NHi>。重复该操作直到PHi为多播成员节点,这样就消除了多余的路径。

MACT_Eliminate消息的格式为:源节点地址目的节点地址上一跳地址

至此,我们建立起一棵连接所有多播成员节点的分发树,也就是分发路径,沿着上述分发路径进行云内容的传送,有利于降低能耗。

最后我们介绍本文提出的EEDM模型的能耗消耗,并与使用广播进行副本分发的能耗消耗进行对比。具体过程如下:

1.计算EEDM模型的能耗消耗。

第一步:确定EEDM模型的能耗计算公式。

EEDM模型中数据分发的能耗主要由分发树树长以及构建分发树时交换消息的数量决定,且能耗花费与分发树树长、交换消息数量成正比。我们建立CCDN数据分发的能耗公式,表示为:

P=T×(La+mb) (1)

其中P代表分发单位数据所产生的总能耗,单位是J;T是发送的数据包个数;L是构建的分发树的总长;m是数据分发过程中交换信息的总数量;a和b是功耗参数,分别代表发送单位长度数据和交换一条信息所需能耗。

第二步:设置参数值。

我们假设节点分布在100×100的平方区域内,设置当前分发任务为T=103个数据包,每个数据包大小为20k,并设置a=b=50nJ/bit。

第三步:具体计算过程。

我们首先根据确定好的参数值将公式(1)进行化简,我们将参数值代入公式可得:

P=T×(La+mb)=20×103×103×(L+m)×50×10-9=(L+m)

当节点服从正态分布,聚类算法采用K-Means时,以当前网络大小500为例,我们得到的分发树总长为283,得到的交换信息总数量为806,此时得到的总能耗为1089J。

2.计算使用广播进行副本分发的能耗消耗。

第一步:确定能耗计算公式。

使用广播进行副本分发时,我们已知源节点以及目的节点,源节点发送广播消息,将数据发送到所有的目的节点。使用广播的方式进行数据分发的分发树长为从源节点到达所有目的节点时所经历的路径长度,交换消息数量为从源节点到达所有目的节点时所有节点广播消息的数量。我们依然使用公式(1)作为能耗计算公式。

第二步:设置参数值。

我们假设节点分布在100×100的平方区域内,设置当前分发任务为T=103个数据包,每个数据包大小为20k,并设置a=b=50nJ/bit。

第三步:具体计算过程。

当节点服从正态分布,聚类算法采用K-Means时,以当前网络大小500为例,我们得到的分发树总长为860,得到的交换信息总数量为2960,此时得到的总能耗为3820J。

3.当节点服从正态分布,聚类算法采用K-Means时,以网络大小500为例,EEDM模型和采用广播进行数据分发所求得的能耗消耗分别为1089、3820。显然使用EEDM模型进行数据分发的能耗消耗要低的多。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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