发明内容
有鉴于此,本发明的主要目的在于提供一种资源分配方法,在保证系统的总收益最优的基础上,实现节点的利益最大化。
为了实现上述目的,本发明实施例提供了一种资源分配方法,用于向P2P网络系统中源节点请求资源的竞争节点分配资源,包括步骤:
A、从接收的请求资源的各个竞争节点中确定出候选节点;
B、为各个候选节点依照一定次序依次动态分配资源,包括:
根据已分配资源的候选节点确定出P2P网络系统当前的最大收益值;和
根据所述当前的最大收益值确定出为当前候选节点分配的资源。
由上,针对P2P网络系统资源分配中存在的不公平和缺少对节点的激励等不足,根据节点的贡献值竞争机制选择出可获得资源的节点,然后在实现系统收益最大化的基础上进行带宽的分配,鼓励节点多提供服务来提高自己的贡献值,从而在资源竞争中能获得更多的资源。
优选地,所述步骤A包括:
将接收的请求资源的各个竞争节点确定出对应的各个贡献值;
将贡献值大于预设值的竞争节点作为候选节点。
所述竞争节点的贡献值根据公式(1)计算:
其中Ci表示竞争节点i的贡献值,Ui表示竞争节点i在设定阶段内的上传量,Di表示竞争节点i在设定阶段内的下载量;μ是一个常量,范围为(0,1);k(i,t)表示竞争节点i在其在线时间t内提供资源得到的奖励。
优选地,步骤B的所述一定次序为:
各个候选节点贡献值大小降序排列的次序。
优选地,贡献值相同的候选节点,采用请求资源大小升序排列的次序。
优选地,所述P2P网络系统当前的最大收益值根据公式(3)计算:
其中,xi表示为候选节点i分配的资源;di表示候选节点i的请求资源;表示候选节点i的收益;Bs表示源节点所拥有的资源;αi表示第i个节点的贡献值与所有节点总贡献值的比率,
优选地,步骤B当前候选节点分配的资源根据公式(2)的递归方程计算:
其中,f1(x)表示只有一个节点时的系统最大收益值,U1(x)也表示只有一个节点时的系统最大收益值,fi(x)表示有i个节点时的系统最大收益值,Ui(xi)表示插入第i个节点时的系统最大收益值,fi-1(x-xi)表示假设不插入第i个节点,前i-1个节点的系统最大收益值,x表示源节点分配出的资源。
优选地,所述接收为设定阶段内接收。
优选地,所述设定阶段根据请求资源的竞争节点个数或时间长度确定。
优选地,所述预设值为:上一设定阶段各个候选节点在线时长的平均值。
优选地,所述预设值为:不同设定阶段各个候选节点在线时长的平均值和不同设定阶段的权重值加权后的和的平均值。
具体实施方式
下面将结合附图,对本发明实施例进行详细描述。
本发明实施例采用基于竞争机制的资源分配策略(ResourceDistribution Algorithm based-on Competitive Mechanism,RDA-CM)对P2P网络系统中源节点的资源进行分配。P2P网络系统中各节点竞争资源的过程简述如下:在资源(文件)传输过程中,提供资源共享服务(例如,上传文件供其他节点下载)的节点称之为源节点,以Ns表示;请求从Ns下载资源的节点称之为竞争节点,以Ni表示,1≤i≤n,n为竞争节点的个数。
例如,如图1所示,源节点Ns具有带宽资源Bs,共有四个竞争节点N1、N2、N3和N4请求从源节点Ns下载资源。竞争节点N1、N2、N3和N4分别向源节点Ns发送资源请求信息m1(t)、m2(t)、m3(t)和m4(t),各资源请求信息中分别包含各竞争节点所需的下载量d1、d2、d3和d4。接收到这些信息之后,源节点Ns以设定的资源分配机制来为各竞争节点分别分配带宽x1、x2、x3和x4。
本实施例中的P2P网络系统中的各节点具有下列性质:
①节点加入和离开P2P网络为自愿和随机的,但是在资源请求过程及分配过程中不会离开网络;
②各节点能够获知所需资源的确切位置,即获知源节点的确切位置;
③各节点能够计算自己的贡献值。
能够分配到资源的竞争节点称为候选节点。
下面对本实施例提供的资源分配方法进行详细说明。参见图3,本发明第一实施例提供的资源分配方法包括以下步骤:
步骤A1、从接收的请求资源的各个竞争节点中确定出候选节点;
步骤B1、为各个候选节点依照一定次序依次动态分配资源,包括:
根据已分配资源的候选节点确定出P2P网络系统当前的最大收益值;和
根据所确定的当前的最大收益值确定出为当前候选节点分配的资源。
参见图3,为本发明第二实施例提供的资源分配方法的流程图,具体而言,本方法包括:
步骤A2、源节点在设定阶段内接收若干个竞争节点分别发送的请求信息,各请求信息中包含各竞争节点的贡献值以及请求的资源信息。
本实施例中,将节点提供的资源(上传量)和从其它节点下载的资源(下载量)作为贡献值的决定因素。当该节点向其它节点提供资源,贡献值会增加;当该节点享用了其它节点提供的资源,贡献值会减小。而在线时间越长为其他节点提供服务(资源)的机会越多,因此在线时长也是贡献值的决定因素。
因此,竞争节点的贡献值Ci按照公式(1)进行计算
其中Ci表示竞争节点的贡献值,Ui表示竞争节点在设定阶段内的上传量,Di表示竞争节点在设定阶段内的下载量;μ是一个规范化系数,范围为(0,1);k(i,t)表示竞争节点i在其在线时间t内提供资源得到的奖励,与其在线时长成正比,由此鼓励能够作为源节点的节点尽量长时间的在线。
此外,本实施例的资源分配方法具有阶段性,可以以时间长度或节点个数设定多个阶段来分配资源。例如以2小时作为一个分配时段,每隔2小时对该时段内请求资源的竞争节点进行资源分配。或以接收到5个竞争节点的请求信息作为一个分配时段,当接收到5个请求信息时开始分配资源。
另外,竞争节点的贡献值也可以是存储在P2P网络系统中,如服务器,对应各个竞争节点的ID(如用户名)进行存储。源节点可以根据竞争节点ID去获取对应的贡献值。
步骤B2、源节点根据接收到的各请求信息得到各竞争节点的贡献值,并判断各贡献值是否大于预设值;是则执行步骤D2;否则执行步骤C2。
该预设值的计算方法很多,例如可以为不同设定阶段(例如上一设定阶段)参与资源下载的节点在线时长的平均值。可以为上一设定阶段内参与资源下载的节点在线时长的平均值乘以设定的权重值(例如0.9)加本次设定阶段内参与资源下载的节点在线时长的平均值乘以另一权重值(例如0.1)。可以为不同设定阶段内参与资源下载的节点在线时长的不同平均值乘以各自设定的权重值,权重值可以与时间相关,越靠后的时间权重值越大,以鼓励用户在线,以及鼓励新用户保持在线。
步骤C2、不向对应的竞争节点提供资源,结束本次该对应竞争节点的请求。
步骤D2、将贡献值大于设定值的竞争节点设为候选节点,将各候选节点的贡献值和请求的资源信息进行对应存储。
本实施例中根据各竞争节点的贡献值来确定候选节点,贡献值小于预设值的竞争节点将不能够获得请求的资源。
优选地,按照贡献值大小的降序排列的次序存储各候选节点,对于贡献值相同的候选节点,按照请求资源(带宽)的大小的升序排列的次序进行存储。
步骤E2、将P2P网络系统的最大收益值初始化为0并存储。
步骤F2、根据存储的系统最大收益值计算为存储的第i个候选节点所分配的资源,并存储该计算出的资源,1≤i≤n。
当i=1时,第1个候选节点为贡献值最大的候选节点,贡献值越大且请求的资源越少,获得资源的优先级越高。
本步骤中,具体根据公式(2)的递归方程计算分配给第i个候选节点的资源;
其中,f1(x)表示只有一个节点时的系统最大收益值,U1(x)也表示只有一个节点时的系统最大收益值,fi(x)表示有i个节点时的系统最大收益值,Ui(xi)表示插入第i个节点时的系统最大收益值,fi-1(x-xi)表示假设不插入第i个节点,前i-1个节点的系统最大收益值,x表示源节点分配出的资源。
步骤G2、根据步骤F2计算出的资源计算并更新存储的系统最大收益值。
P2P网络系统当前的最大收益值根据下述公式(3)进行计算:
其中,xi表示为候选节点i分配的带宽;di表示候选节点i请求为其分配的请求带宽;表示候选节点i的收益;Bs表示源节点所拥有的带宽;αi表示第i个节点的贡献值与所有节点总贡献值的比率,
步骤H2、令i=i+1,返回步骤F2,直至为所有候选节点分配完资源。
基于竞争机制的资源分配方法的代码如下:
例如,在P2P网络系统中,共有四个竞争节点请求资源,该四个竞争节点的贡献值为C={800,500,100,100},各竞争节点所请求的资源为d={500,350,150,200},源节点的资源Bs=1000,则根据公式(2)(3)可以求得为各竞争节点分配的资源为x={500,350,150,0}。
下面对本实施例提供的资源分配方法的有效性进行分析和证明。
性质:通过基于贡献值竞争机制的方法作为带宽分配的准则,可有效地控制资源分配。
证明:根据节点的行为,分为下面三种情况:第一,节点i不贡献(上传)资源。此时节点的贡献值Ci≈0,该节点在竞争中就会被淘汰,将不能从网络中收益,即不能获得需要的资源。第二,节点i贡献资源,暂时没有从网络中收益。随着时间的增加,贡献值Ci不断增加,该节点在竞争中的优势增强,就可以以较高的优先权从网络中收益,获得所需要的资源。第三,节点i和节点j同时贡献资源,节点的贡献值Ci<Cj,随着节点j获得资源的增加,贡献值会减少,多收益的行为得到控制。
动态规划算法最优性定理:设阶段数为n的多阶段决策过程,其阶段编号为k=1,2,...n,对于初始状态x1∈X1,策略是最优策略的充要条件是对于任意的k,1<k≤n,有:
其中fk,n(xk,pk,n(xk))表示从阶段k到阶段n的目标函数,opt是最优化(optimization)的缩写,可根据题意表示成max或min。
动态规划算法最优化原理:(最优性定理的推论)若是最优策略序列,则对于任意一个整数k,1<k<n,不论前面k个决策如何,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策也是最优的。
结论:通过动态规划算法最优化原理的介绍,得出对带宽的分配问题符合动态分配算法的最优化原理。
证明:假设原问题最优解包含的策略序列不是最优的,那么必有更优的策略序列{x1,x2,...,xk}使得新解{x1,x2,...,xn}优于原问题最优解,与是最优的策略序列矛盾。原理得证。
定理:利用动态分配算法求出的带宽分配向量是最优的,即对于任意的分配带宽向量x={x1,x2,...,xn},有已知α1/d1≥α2/d2≥L≥αn/dn。
证明:假设x={x1,x2,...,xn}为最优解,有
step1:依次比较序列x={x1,x2,...,xn}与序列中的值,找到第一次出现的两个不相等的值xk与将xk替换为得到新序列x'=(x1',x2',...,xk-1',xk',...,xn'),其中
step3:分析上式:如果能证明xk'>xk,则xk增加到xk',那么必须从(xk+1,...,xn)中减去同样多的带宽,保证总收益仍然是M。从而有
由动态规划算法,求得的向量为其中:j是使得的最小下标。
xk和的相对位置有三种不同的情况,如下:
1)k<j; xk≤dk,因此得证。
2)k=j;
第一个不等的元素,继续代换,最后得出所有即新产生的最优解与动态规划算法求出的最优解相等,得出动态规划算法求出的解是最优解,得证。
本实施例还通过仿真对本发明提供的资源分配方法的有效性进行了测试。所做仿真的配置为:Intel(R)Celeron(R)CPU E3300,2GB内存。操作系统为WindowsXP,采用NS2仿真软件。假设网络中有1000个节点参与,一类是贡献大的活跃节点,一类是贡献小的惰性节点,剩下的称之为其它节点。
首先,对于相同数目的节点请求资源时,三类节点获得资源能力的情况,将本发明基于竞争机制资源分配算法与基于用户满意度的资源分配算法进行了对比。从图4中可以看出,基于RDA-CM的资源分配方法的P2P网络系统中,活跃节点在竞争时获得资源(享受服务)的能力更强,而如图5所示,惰性节点获得资源的能力迅速下降。
其次,对于系统的总收益随时间变化的情况,将本发明基于RDA-CM的资源分配算法与平均分配算法进行了对比。从图6可以看出,在基于RDA-CM的资源分配方法的P2P网络系统中,系统的总收益随时间有明显的上升。而在基于平均分配资源的P2P网络系统中,系统收益一开始是递增的,随着时间的推移,直线下降,这说明因为搭便车行为的增多,贡献大的活跃节点也逐渐转入了自私的懒惰节点阵营。
综上,本发明实施例提供的资源分配方法,针对P2P网络系统资源分配中存在的不公平和缺少对节点的激励等不足,根据节点的贡献值竞争机制选择出可获得资源的节点,然后在实现系统收益最大化的基础上进行带宽的分配,鼓励节点多提供服务来提高自己的贡献值,从而在资源竞争中能获得更多的资源。在实现个体收益最大化的同时,也兼顾了系统总收益最大化。仿真实验证实了该方法抑制了自私节点,鼓励了无私节点,达到了系统公平的目的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,基于本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。