李燕

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

FastTrack

FastTrack来源于Gnutella,是Gnutella 和 Napster的杂交体

有些node承担了更重要的责任,这些nodes称为supernodes,因为这些改进,它比Gnutella更快

 

 

除了有几个supernodes之外,它与Gnutella overlay长得很像.这些supernodes承担了一些责任,这些责任与Napster的server存储derectory information类似.

peers不能自己选择做supernode,peers被选择做supernode是根据它过去所做的贡献。这个贡献是由a reputation level来衡量的.

比如说在Kazaalite里面,reputation of a user 位于0与1000之间,当一个user加入这个system是,它的初始reputation是10,随着连接时间的增加以及它上传文件的增加,这个reputation会增加,当达到一个threshold,这个peer就可能成为supernode.

有了这些supernode,peers的查找速度会变快(they can just search in nearby supernode),比如就上图来说,左下角的那个蓝色的peer只需要发送query information给与它相邻的supernode(位与底部中间的那个红色的supernode)就可以了,而不是需要采用像Gnutella那样使用flood(洪泛法) 在整个overlay graph来发送query information

使用supernode有什么好处?使用supernode的动机是什么?-------你的很多查询信息现在变成了local searches in your local data structure or your local directory information,这样它们就不会引起network traffic.所以它们的速度就会非常快

 

BitTorrent

 

BitTorrent非常流行现在也很流行,它与我们之前介绍的系统类似但也有些不同,它是采用incentivizing(以物质刺激鼓励) peers to participate in the system.我们之前介绍过很多peers对系统并没有贡献,它们不贡献files,不贡献bandwidth,然后BitTorrent解决这个问题是采用incentives(奖励)来让peers参与到这个系统中来。所以peers能从帮助其它的peers中受益。

BitTorrent有一个叫做trackers的概念,一般来说每一个file都有一个tracker,但是也存在好几个files有一个tracker。

当一个peer想加入这个system时,它查找the torrent或者tracker,这样就可以与tracker交流对话。Tracker维持着a list of some of the peers(这些peers现在正在传输这个文件,一个文件有一个tracker),tracker做到这些是通过从现有的peers那儿接收心跳(heartbeats).

Peers分为两类,一类为seed,它们有full file,帮助其它的peers来下载文件;一类为leechers(吸血鬼),它们拥有文件的一部分(一个文件分割成了许多块,一般来说是相同大小的blocks),peer 拥有很多文件块,它也在不断的下载这个文件的其它块。

The new peer, 当加入到这组peers中来时,它成为一个leecher因为它不包含文件的任何部分。

当一个peer开始从它的neighbors下载文件时,因为这个peer有很多neighbors,有很多file blocks可以供它下载,那么它是如何选择哪个file block去下载呢?----使用Local Rarest First policy. 

Local Rarest First policy: 选择那个在这些neighbors中被复制最少的block.因为随着系统的变动,这些block可能会比其它的那些blocks(replicated more)要消失得更快,所以Local Rarest First policy 帮助下载这些稀少的blocks.

特例: 新加入的node允许随意选择一个neighbor,这样有助于bootstrapping(这样就不会get stuck with just one deterministic group )

 激励机制是通过Tit for tat(以牙还牙)bandwidth usage scheme来实现的.这个机制激励a peer to provide blocks to neighbors. 你给那些曾经给你提供最好下载率的neighbors提供blocks,这样就刺激你的neighbors给你提供下载速度以便以后你能够给它们提供blocks.这个激励机制不仅是对leechers(吸血鬼)而且也是对Seeds 

一个peer与它的neighbors同时传输的文件数量可能非常大,我们不想overload this peer,所以在这儿我们使用choking.choking限制了同时上传的neighbors的数量(一般来说<=5为最好的neighbors)

任何结点都可能被choked.这些被choked的结点从那些unchoked的set集中选择,使这些被选择的结点被choked.每隔一段时间(如10s)就reevaluate这个set(因为每隔一段时间会unchock一个neighbor,这样使这个set to be very fresh)

Optimistic unchock: 第隔一段时间unchock一个任意的neighbor

总的来说choking帮助peers限制有多少neighbors uploading to,以防止upload bandwidth is overwhelmed

 

posted on 2015-10-29 18:01  李燕  阅读(505)  评论(0编辑  收藏  举报