基于贡献值的资源分配原则是“多劳多得”“多劳先得”。对于资源请求者而言,贡献值大,及时得到满足的概率就高,从而促使其做更大贡献;对于资源提供者而言,为了尽可能增大自己的贡献值,在做资源分配时,应把资源优先分配给贡献值大的节点,同时根据资源的受欢迎度排序,越受欢迎的资源越排在前面,节省检索时间,提高查询效率。
资源分配算法的主要程序如下:
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(){}; //对资源刷新排序
}
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。