理论教育 基于贡献值的P2P资源共享激励机制的仿真实验

基于贡献值的P2P资源共享激励机制的仿真实验

时间:2023-04-14 理论教育 版权反馈
【摘要】:为了评价基于贡献值的P2P资源共享激励机制,进行了仿真实验。在P2P仿真系统中,应用环境是文件共享服务,文件分布满足Zipf定律,其中贡献节点占55%,搭便车节点占45%。从图3.8中可以看出,未引入激励机制的P2P 系统可用资源随时间变化并不明显,而引入激励机制的P2P系统可用资源随时间变化增加较快。

基于贡献值的P2P资源共享激励机制的仿真实验

基于贡献值的资源分配原则是“多劳多得”“多劳先得”。对于资源请求者而言,贡献值大,及时得到满足的概率就高,从而促使其做更大贡献;对于资源提供者而言,为了尽可能增大自己的贡献值,在做资源分配时,应把资源优先分配给贡献值大的节点,同时根据资源的受欢迎度排序,越受欢迎的资源越排在前面,节省检索时间,提高查询效率

资源分配算法的主要程序如下:

public class Request

{

private String recourceName; //请求的资源名

private int Node Id; //发出请求的节点

public String getRecourceName()

{

return recourceName;

}

public void setRecourceName(String recourceName)

{

this.recourceName = recourceName;

}

public int getNodeId()

{

return NodeId;

}

public void setNodeId(int nodeId)

{

NodeId = nodeId;

}

}

public class allocate

{

public static ArrayList requestlist=new ArrayList();

public void process(Request request)

{

requestlist.add(request);

int c=getCi(request.getNodeId());

if(isToolow(c))(www.daowen.com)

{

refuseService();

return;

}

else

{

if(requestlist.size()==1)

{

allocateResource(request.getRecource Name(),request.getNodeId());

}

else

{

ArrayList list=sortlist(requestlist);

for(int i=0;i<list.size();i++)

{

allocateResource(list.get(i).getResourceName(),list.get(i).

getNodeId());

}

}

}

refresh();

}

int getCi(int nodeid){}; //获得请求节点贡献值

boolean isToolow(int Ci){}; //是否贡献值过低

void refuseService(){}; //返回客户端拒绝提供服务的信息

void allocateResource(String file Name,int nodeid){}; //分配最优资源,修改被下载次数,并增加提供此资源的贡献值

ArrayList list sortlist(ArrayList list){};

void refresh(){}; //对资源刷新排序

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈