??xml version="1.0" encoding="utf-8" standalone="yes"?>
拓扑l构是指分布式系l中各个计算单元之间的物理或逻辑的互联关p,l点之间的拓扑结构一直是定pȝcd的重要依据。目前互联网l中q泛使用集中式、层ơ式{拓扑结构。Internet本n是世界上最大的非集中式的互联网l,但是九十q代所建立的一些网l应用系l却是完全的集中式的pȝQ许多Web应用都是q行在集中式的服务器pȝ上。集中式拓扑l构pȝ目前面着q量存储负蝲、DOSQDenial of ServiceQ拒l服务)dQ网l带宽限制等一些难以解决的问题。Peer-to-Peer (UP2P) pȝ主要采用非集中式的拓扑结构,一般来说不存在上述q些N。根据结构关pd以将P2Ppȝl分为四U拓扑Ş式:
其中Q?strong>中心化拓?/strong>最大的优点是维护简单,资源发现效率高。由于资源的发现依赖中心化的目录pȝQ发现算法灵z高效ƈ能够实现复杂查询。最大的问题与传l客h/服务器结构类|Ҏ造成单点故障Q访问的“热点”现象和版权U纷{相关问题,q是W一代P2P|络采用的结构模式,l典案例是著名的MP3׃n软gNapster[1].
Napster是最早出现的P2Ppȝ之一Qƈ在短期内q速成长v来。它实质上ƈ非是Ua的P2PpȝQ而是通过一个中央烦引服务器保存所有Napster用户上传的音乐文件烦引和存放位置的信息。它的工作原理如?所C。当某个用户需要某个音乐文件时Q首先连接到Napster中央索引服务器,在服务器上进行检索,服务器返回存有该文g的用户信息,再由h者直接连到文件的所有者传输文件。Napster首先实现了文件查询与文g传输的分,有效地节省了中央服务器的带宽消耗,减少了系l的文g传输延时?/p>
? Napster的拓扑结?/p>
然而,q种对等|络模型存在以下q些问题Q?/p>
l合上述优缺点,对小型网l而言Q?strong>中心化拓?/strong>模型在管理和控制斚w占一定优ѝ但鉴于其存在的上述~陷Q该模型q不适合大型|络应用?strong>
全分布式非结构化拓扑的P2P|络是在重叠|络QOverlay NetworkQ?a name="_ftnref1">(见标?)采用了随机图的组l方式,l点度数服从Power-law规律Q幂ơ法则)[2]Q从而能够较快发现目的结点,面对|络的动态变化体C较好的容错能力,因此h较好的可用性。同时可以支持复杂查询,如带有规则表辑ּ的多关键词查询,模糊查询{,采用q种拓扑l构最典型的案例便是GnutellaQ音译:U特拉)。准地_Gnutella不是Ҏ某一ƾYӞ而是指遵守Gnutella协议[3]的网l以及客L软g的统U。目前基于Gnutella|络的客L软g非常多,著名的有Shareaza?a >LimeWire和BearShare{?/p>
?Gnutella的拓扑结构和文g索方?/p>
Gnutella和Napster最大的区别在于Gnutella是更加纯_的P2PpȝQ因为它没有中央索引服务器,每台机器在Gnutella|络中是真正的对{关p,既是客户机同时又是服务器Q所以被UCؓ对等?ServentQServer+Client的组?。在文g索方面,它与Napster也不相同。在Gnutella|络的发展初期,它主要采用基于完全随机图的Flooding搜烦法。图2 昄了Flooding的工作流E:当一台计机要下载一个文Ӟ它首先以文g名或者关键字生成一个查询,q把q个查询发送给与它相连的所有计机Q这些计机如果存在q个文gQ则与查询的机器建立q接Q如果不存在q个文gQ则l箋在自qȝ计算Z间{发这个查询,直到扑ֈ文g为止。ؓ了控制搜索消息不至于永远q样传递下去,一般通过TTL (Time To Live)的减值来控制查询的深度?/p>
但是Q随着联网节点的不断增多,|络规模不断扩大Q通过q种Flooding方式定位对等点的Ҏ造成|络量急剧增加Q从而导致网l中部分低带宽节点因|络资源q蝲而失效。所以在初期的Gnutella|络中,存在比较严重的分区,断链现象。也是_一个查询访问只能在|络的很一部分q行Q因此网l的可扩展性不好。所以,后来许多研究人员在Flooding的基上作了许多改q,例如采用Random work [4]、Dynamic Query[5]{方法?/p>
׃非结构化|络重叠网l认为是一个完全随机图Q结点之间的链\没有遵@某些预先定义的拓扑来构徏。这些系l一般不提供性能保证Q但定w性好Q支持复杂的查询Qƈ受结炚wJ加入和退出系l的影响。但是查询的l果可能不完全,查询速度较慢Q采用Flooding查询的系l对|络带宽的消耗非常大Qƈ由此带来可扩展性差{问题?/p>
全分布式l构化拓?/strong>的P2P|络主要是采用分布式散列表(Distributed Hash Table, 写成DHTQ技术来l织|络中的l点。DHT是一个由q域范围大量l点共同l护的巨大散列表。散列表被分割成不连l的块,每个l点被分配给一个属于自q散列块,q成个散列块的管理者。通过加密散列函数Q一个对象的名字或关键词被映ؓ128位或160位的散列倹{分布式散列表v源于SDDSQScalable Distribute Data StructuresQ[6]研究QGribble{实C一个高度可扩展Q容错的SDDS集群。DHTcȝ构能够自适应l点的动态加?退出,有着良好的可扩展性、鲁性、结点ID分配的均匀性和自组l能力。由于重叠网l采用了定性拓扑结构,DHT可以提供_的发现。只要目的结点存在于|络中DHT总能发现它,发现的准性得C保证Q最l典的案例是TapestryQPastryQChord和CAN?/p>
Tapestry [7]提供了一个分布式定w查找和\由基q_Q在此^台基之上Q可以开发各UP2P应用(OceanStore[8]x此^C的一个应?。Tapestry的思想来源于Plaxton。在Plaxton中,l点使用自己所知道的邻q结点表Q按照目的ID来逐步传递消息。TapestryZPlaxton的思想Q加入了定w机制Q从而可适应P2P的动态变化的特点。OceanStore是以Tapestry\由和查找基础设施的P2Pq_。它是一个适合于全球数据存储的P2P应用pȝ。Q何用户均可以加入OceanStorepȝQ或者共享自q存储I间Q或者用该pȝ中的资源。通过使用复制和缓存技术,OceanStore可提高查扄效率。最q,Tapestry为适应P2P|络的动态特性,作了很多改进Q增加了额外的机制实C|络的Y状态(soft stateQ,q提供了自组l、鲁性、可扩展性和动态适应性,当网l高负蝲且有失效l点时候性能有限降低Q消除了对全局信息的依赖、根l点易失效和Ҏ差的问题?/p>
Pastry 是微软研I提出的可扩展的分布式对象定位和\由协议,可用于构建大规模的P2Ppȝ。如? 所C,在Pastry中,每个l点分配一?28位的l点标识W号(nodeID) Q所有的l点标识WŞ成了一个环形的nodeIDI间Q范围从0?128 - 1 Q结点加入系l时通过散列l点IP地址?28位nodeIDI间中随机分配。网l结点的加入与退出,资源查询的过E可以参考文献[9]?/p>
?Pastry的消息\?strong>
Chord [10]目诞生于美国的ȝ理工学院。它的目标是提供一个适合于P2P环境的分布式资源发现服务Q它通过使用DHT技术得发现指定对象只需要维护O(logN)长度的\p。在DHT技术中Q网l结Ҏ照一定的方式分配一个唯一l点标识W?Node ID) Q资源对象通过散列q算产生一个唯一的资源标识符(Object ID) Q且该资源将存储在结点ID与之相等或者相q的l点上。需要查找该资源Ӟ采用同样的方法可定位到存储该资源的结炏V因此,Chord的主要A献是提出了一个分布式查找协议Q该协议可将指定的关键字(Key) 映射到对应的l点(Node) 。从法来看QChord是相Ҏ列算法的变体?/p>
? Chord的拓扑Ş?/p>
CAN(Content Addressable Networks)[11] 目采用多维的标识符I间来实现分布式散列法。CAN所有结Ҏ到一个nl的W卡空间中Qƈ为每个结点尽可能均匀的分配一块区域。CAN采用的散列函数通过?key, value) 对中的keyq行散列q算Q得到笛卡尔I间中的一个点Qƈ?key, value) 对存储在拥有该点所在区域的l点内。CAN采用的\q法相当直接和单,知道目标点的坐标后,将h传给当前l点四邻中坐标最接近目标点的l点。CAN是一个具有良好可扩展性的pȝQ给定N个结点,pȝl数为dQ则路由路径长度为O(n1/d) Q每l点l护的\p信息和网l规模无关ؓO(d) ?/p>
上述四种ZDHT的P2Ppȝ的性能比较可以参照[12]。DHTq类l构最大的问题是DHT的维护机制较为复杂,其是结炚wJ加入退出造成的网lL动(ChurnQ会极大增加DHT的维护代仗DHT所面的另外一个问题是DHT仅支持精关键词匚w查询Q无法支持内?语义{复杂查询?/p>
半分布式拓扑l构Q有的文献亦UCh模式Q英文表达ؓHybrid StructureQ吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高Q处理、存储、带宽等斚w性能Q的l点作ؓl点Q英文表达ؓSuperNodes或者HubsQ,在各个超U结点上存储了系l中其他部分l点的信息,发现法仅在l点之间转发Q超U结点再查询请求{发给适当的叶子结炏V半分布式结构也是一个层ơ式l构Q超U结点之间构成一个高速{发层Q超U结点和所负责的普通结Ҏ成若q层ơ。采用这U结构的最典型的案例就?a >KaZaa?/p>
? 半分布式拓扑l构Q网l中包含Super NodeQ?/p>
KaZaa是当前世界最行的几ƾP2P文g׃n软g之一。根据CA公司l计Q全球KaZaa的下载量过2.5亿次。用KaZaa软gq行文g传输消耗了互联|?0%的带宽。之所以它如此的成功,是因为它l合了Napster和Gnutella共同的优炏V从l构上来_它用了Gnutella的全分布式的l构Q这样可以是pȝ更好的扩展,因ؓ它无需中央索引服务器存储文件名Q它是自动的把性能好的机器成ؓSuperNodeQ它存储着d最q的叶子节点的文件信息,q些SuperNode,再连通v来Ş成一个Overlay Network. ׃SuperNode的烦引功能,使搜索效率大大提高?/p>
? KaZaa的Y件界?/p>
半分布式l构的优Ҏ性能、可扩展性较好,较容易管理,但对点依赖性大Q易于受到攻击,定w性也受到影响?/p>
在实际应用中Q每U拓扑结构的P2P|络都有其优~点Q下表从可扩展性、可靠性、可l护性、发现算法的效率、复杂查询等斚w比较了这四种拓扑l构的综合性能?/p>
比较标准Q拓扑结?/p> |
中心化拓?/p> |
全分布式非结构化拓扑 |
全分布式l构化拓?/p> |
半分布式拓扑 |
可扩展?/p> |
?/p> |
?/p> |
?/p> |
?/p> |
可靠?/p> |
?/p> |
?/p> |
?/p> |
?/p> |
可维护?/p> |
最?/p> |
最?/p> |
?/p> |
?/p> |
发现法效率 |
最?/p> |
?/p> |
?/p> |
?/p> |
复杂查询 |
支持 |
支持 |
不支?/p> |
支持 |