首页 理论教育Gnutella:分布式数据库技术实现

Gnutella:分布式数据库技术实现

【摘要】:与Napster一样,Gnutella也是一个音乐共享系统,但其实现方式有所不同。Gnutella是一个纯无中心P2P系统,主要功能是文件共享。Gnutella系统具有如下特点。一方面,每个查询会广播到尽可能多的节点,Gnutella有能力得到所有潜在结果。

与Napster一样,Gnutella也是一个音乐共享系统,但其实现方式有所不同。Gnutella是一个纯无中心P2P系统,主要功能是文件共享。没有中心授权来负责网络的组织,也没有客户机和服务器的区分。该系统里的节点直接通过特定软件互联。简单来说,这是一种基于软件的网络体系结构。

下面讨论Gnutella中的节点是如何加入和离开网络的,是如何下载文件的。

●加入和离开网络:当节点加入Gnutella系统中的网络时,该系统会发送一个“PING”消息,显示自己的存在。“PING”消息通过广播的方式传递给其他节点。其他节点收到这个消息就返回一个“PONG”消息作为答复,表示它们已经获知新来者的存在。从“PONG”消息里,新来者获悉其他节点的信息,可以和它们建立邻居关系。节点离开网络时,该节点无需通知其他邻居。这样,每个节点必须按一定间隔使用“PING”消息测试邻居是否在线。不返回消息,则看作该节点离开网络,并修改自己的邻居表。

●搜索和下载文件:如果节点希望发现某个文件,Gnutella系统则会发送一个“lookup”消息询问邻居,所有邻居会逐个答复消息。被查找文件的节点会答复“hit”消息,按照原来询问消息路由返回。这样,询问者会得到查询结果。广播过程一直进行到遍历整个网络或查找消息的TTL(time-to-live)值归零。发起查找的节点获得拥有文件的节点信息后就可以从中选择某个或某些节点,下载文件。

Gnutella系统具有如下特点。(www.chuimin.cn)

●可伸缩性:Gnutella系统的广播机制是一把双刃剑。一方面,每个查询会广播到尽可能多的节点,Gnutella有能力得到所有潜在结果。另一方面,越来越多的节点加入Gnutella系统中的网络,当节点同时发布查询时,网络中消息泛滥。可伸缩性成了问题。

●自组织性:当节点首次连接入(包括因离开或故障重新加入)Gnutella系统中的网络时,就像一个人进入一个全新的环境。开始时,Gnutella会随机选择一个节点加入进去,随着时间的推移,认识越来越多的节点,与它们建立连接,但这个连接不是永久的。为了最快和最好地满足查询要求,Gnutella会选择合适的邻居,重构自己的“联络图”。这样,高速连接的节点会受到青睐,置于拓扑结构的中心部分,低速连接的节点会边缘化。

●匿名性:Gnutella是有很好匿名性的系统。它使用广播传递查询消息,基于广播的路由是通过路由表实施的,路由表是动态的且随时可变的。因此几乎不可能知道节点发出的查询和消息走向哪里。但是,一旦初始节点选择一个或几个节点直接建立连接和下载文件,请求者和提供者的IP地址就暴露给双方了。

可用性:节点可以随时加入和离开网络,可用性就成了问题。因此,无法保证所有的请求都得到很好的响应。