理论教育 确定节点身份有几种情况!

确定节点身份有几种情况!

时间:2023-04-14 理论教育 版权反馈
【摘要】:对等点加入Collaborative-Learning P2P网络后,需要进行上一次运行身份的恢复或者当是第一次加入Collaborative-Learning P2P网络时,需要确定运行的身份。因此,分为以下两种情况: 如果对等点曾经加入过Collaborative-Learning P2P网络,则它根据Recently Identit来恢复上一次运行时的身份。按照上述过程,若新对等点能以Rendezvous Peer身份运行,则说明在当前的网络环境下,它是具有高性能的并且应当承担搜索任务。

确定节点身份有几种情况!

对等点加入Collaborative-Learning P2P网络后,需要进行上一次运行身份的恢复或者当是第一次加入Collaborative-Learning P2P网络时,需要确定运行的身份。因此,分为以下两种情况:

(1) 如果对等点曾经加入过Collaborative-Learning P2P网络,则它根据Recently Identit来恢复上一次运行时的身份。

(2) 如果对等点是第一次加入Collaborative-Learning P2P网络,对等点按以下过程自动确定其身份和选择出Rendezvous Peer。

① 从peer组factory获得NetPeerGroup。

② 建立查找服务(Discovery Service)。

③ 如果发现有处于相同地区的Rendezvous Peer,且该Rendezvous Peer的性能比自己高,则自己以普通边缘节点 Edge peer 身份运行并加入这个对等组;否则,自己作为本地区的Rendezvous Peer身份运行。

④ 如果发现没有处于相同地区的Peer,则自己作为本地区的Rendezvous Peer身份运行。

⑤ 重新修改Recent Identity为当前值。

按照上述过程,若新对等点能以Rendezvous Peer身份运行,则说明在当前的网络环境下,它是具有高性能的并且应当承担搜索任务。

确定节点身份的主要程序如下:

Publish class PublishGroup

{

static PeerGroup myGroup = null; //定义组变量

Private DiscoveryService discoSvc; //定义查找服务

//启动JXTA服务,获得NetPeerGroup组变量和建立查找服务

private void startJxta()

{

myGroup = PeerGroupFactory.newNetPeerGroup();

discoSvc = myGroup.getDiscoveryService();

}

}(www.daowen.com)

public class GroupDiscoverDemo implements DiscoveryListener

{

…//定义变量

public PeerGroupAdvertisement findGroup() //发现组广告

{

discovery.addDiscoveryListener(this); //加入接口监听事件

rvpadv = discovery.getAdvertisements(null,

DiscoveryService.GROUP,null,null,5); //查找组的广告

MessageElement rvpzone = rvpadv.getMessageElement(null, "zone")

If(rvpindustry = peerindustry and rvpzone = peerzone) //自动确定对等点身份

{

MessageElement RvpCapability = rvpadv.getMessageElement(null, "PeerCapability");

//RVP的性能参数

if (RvpCapability > PeerCapability){PeerIdenty = EdgePeer} //为普通边缘对等点身份

else{ PeerIdenty = RendezvousPeer} //为超级对等点身份

}

else{ PeerIdenty = RendezvousPeer} //为超级对等点身份

public void updatePeerRecentIdenty(Peer Identy); // 修改RecentIdenty为当前值

}

}

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

我要反馈