浅谈P2P网络的拓扑结构
2017-01-12孟凡淇
孟凡淇
摘 要:P2P网络被称为对等网,每个节点的地位是对等的,既能充当网络服务的请求者,又能对其他计算机的请求做出响应,提供资源和服务。P2P网络结构是利用客户端的处理能力,实现了通信与服务端的无关性。本文主要介绍P2P网络的拓扑结构。
关键词:P2P;拓扑结构;网络
DOI:10.16640/j.cnki.37-1222/t.2016.24.129
计算机连接的方式叫做“网络拓扑结构”(Topology)。网络拓扑是指各种互连设备用传输媒体相连接的物理布局,主要是指计算机的分布位置和如何连接它们。在P2P系统中,所使用的节点构成了一个网络拓扑的逻辑结构,这个网络拓扑构的造过程中需要解决一系列的实际问题。这些问题包括如何标识节点、节点以何种方式进行组织、节点如何加入/退出网络、如何高效查找节点和资源、系统容错等。现在已经成熟的P2P网络主要分为四类:集中式拓扑(Centralized Topology)、完全分布式结构化拓扑(Decentralized Unstructured Topology)、混合式拓扑(Decentralized Structured Topology)和完全分布式非结构化拓扑(Partially Decentralized Topology)。
1 集中式拓扑
集中式内容路由是提供路由查询最直观和简单的方法。在P2P网络中设置一个节点,称为中心节点,所有其他节点和中心节点建立相应的连接关系,并把自身所拥有的资源索引信息都保存到中心节点上,从而使中心节点拥有全网的资源索引信息。当某个节点需要进行路由查询时,向中心节点提交查询关键字,中心节点遍历资源索引表格,就可以很容易查询全网是否拥有请求节点感兴趣的资源。集中式只是针对路由查询机制而言,在内容传送上仍然是对等服务思想。也就是请求节点通过集中式的路由查询机制定位出能够提供内容服务的节点后,与这些节点分别建立传输通道实现并行传送,而不是完全从中心服务器获得内容。中心化拓扑结构的最大优点是维护容易、资源比较的发现效率较高且实现相对简单。但是这种拓扑结构存在一些问题。集中式结构最明显的缺点是中心节点连接其他节点过多时,需要存储大量的资源索引信息,并且要保持资源索引信息的准确性和通信及时性,就必须不断和其他节点保持信息的同步。当节点规模扩展时,中心节点很容易出现性能瓶颈。代表系统有Napster。
2 全分布式非结构化拓扑
打破集中式结构的最简单办法是在P2P节点之间建立随机拓扑,也就是在一个新加入节点和P2P网络中的某个节点间随机建立连接通道,从而形成一个随机拓扑结构。当一个节点需要进行内容路由时,节点向全网广播查询请求,每个节点收到查询消息后搜索资源列表,查看自己是否有资源可以为请求节点提供服务。如果有,则向请求节点返回搜索结果,否则直接忽略请求。这种机制不需要中心节点存在,是一种纯分布式的机制,但是网络拓扑结构是随机的,没有典型的结构特征,因此这种机制称为纯分布式路由查询技术。但是,随着节点数目的不断增多,网络规模不断扩大,无结构化的纯分布网络进行内容路由时,有很多致命的问题难以解决。特别是大规模节点消息响应风暴问题,在网络规模过大时,当前没有一个完善的机制可以解决,这也导致其超大规模应用面临挑战。采用这种拓扑结构最典型的案例有Gnutella。
3 全分布式结构化拓扑
全分布式结构化拓扑的基本思想是将所有节点按照某种结构(比如形成一种环状网络或树状网络)进行有序组织,从而在路由消息的传递上避免广播风暴,典型的算法有DHT和Chord。分布式散列表(Distributed Hash Table,简称DHT)是将一个关键值(key)的有限集合合理的分散到所有在分布式系统中的节点上,并且能够将信息有效地转送到唯一拥有查询者提供具有关键值的节点。而Chord的组织结构式环网络,该算法的核心思想是在资源空间和节点空间之间寻找一种匹配关系,使得请求节点能够利用有序的网络结构快速定位到相关索引所在的节点。由于P2P网络中的节点较多,且具有不稳定性,这就要求DHT算法必须具有增量的维护能力。在面临急剧的网络膨胀和节点不稳定断开时,节点的路由表能够进行增量更新,节点的加入或离开不能让网络的路由表产生急剧的变化,而只需要维护少量的更新即可。
4 半分布式拓扑
半分布式拓扑结构,也称作混杂模式(Hybrid Structure),它主要是吸取了全分布式非结构化拓扑结构和中心化结构的优点,其将主要节点分为为两类。一类是所谓超级节点(Super Node,简称SN),另一类是普通节点(Ordinary Node,简称ON)。整个网络可以看成是两级结构,第一级是超级节点组成的一个类似随机的拓扑网络,每个SN下面由若干个普通节点组成,每个ON与SN建立邻居关系,它们之间形成星型结构,但ON与ON之间没有直接的邻居关系。一个节点成功的加入P2P网络,是作为SN还是ON,主要根据节点的CPU、内存、网络带宽等资源决定的。如果一个节点是普通节点,加入P2P网络以后,会选择一个SN进行通信,选中的SN节点随后将推送包含多达SN的列表发给新加的节点,加入节点将会根据列表中SN的状态决定选择哪个具体的SN作为其父节点。采用这种结构的最典型的案例就是KaZaa。
5 总结
综上所述,在P2P网络拓扑结构中弱化了中心服务器的作用,使网络中的每个节点能够同时担任信息的消费者和信息的提供者,并且具有同时信息通信方面的功能,因此,P2P网络应用的实现扩展性很强,实现的方式灵活多样,部署的成本低,给互联网的发布和共享带来了巨大的空间。
盐城师范学院自然科学基金项目,编号14YCKL020