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

P2P system: FastTrack and BitTorrent的更多相关文章

  1. P2P system: GNUTELLA

    P2P system: GNUTELLA GNUTELLA是第一个经论证的分布式的peer-to-peer system. Napster的一个重大问题是涉及到间接侵权,所以GNUTELLA消除the ...

  2. P2P system: Introduction

    P2P system : peer-to-peer system 一些流行的P2P system: Napster, Gnutella 我们为什么研究P2P system 大型的分布式系统有成千上万个 ...

  3. P2P system: Napster

    Napster structure client machines之所以叫peers是因为对于server来说这些machines是平等对待的 当你upload一首歌曲如PennyLane.mp3时, ...

  4. P2P system: Chord

    DHT= Distributed Hash Table store the objects(files) at nodes (hosts, machines) in a cluster. The cl ...

  5. P2P system:How Chord tackles failures

    若有peer failures 怎么办 接上面的例子,如果N32 fail掉了,但是N80的finger table还没有更新,这样query到了N16,它找不到N32,只有N80,这样query就会 ...

  6. P2P综述

    原文参见:http://www.lotushy.com/?p=113 [TOC] 什么是P2P P2P全称是Peer-to-peer.P2P计算或P2P网络是一种分布式应用架构.它将任务或负载分发给P ...

  7. UDP打洞、P2P组网方式研究

    catalogue . NAT概念 . P2P概念 . UDP打洞 . P2P DEMO . ZeroNet P2P 1. NAT概念 在STUN协议中,根据内部终端的地址(LocalIP:Local ...

  8. P2P/WSN信任建模与仿真平台

    1.ART Testbed 该平台是基于多代理的信任仿真平台,官网的介绍如下: The Agent Reputation and Trust (ART) Testbed initiative has ...

  9. P2P系统,一致性哈希和DHT

    数据网格产品经常会使用P2P进行通信,借此机会系统地学习一下P2P网络和其资源搜索策略. 1 P2P网络架构 谈到P2P就涉及到一个概念:Overlay Network(覆盖网络).所谓覆盖网络是应用 ...

随机推荐

  1. extract()函数:用于从一个date或者interval类型中截取到特定的部分

    extract()函数:用于从一个date或者interval类型中截取到特定的部分 ### extract 语法extract ( { year | month | day | hour | min ...

  2. Redis从认识安装到实现增删改查

    Redis从一无所知,到知道一点点 Redis是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库 --维基百科 可以简单的说,Redis就是一款高性能的NoSQL数据库 ...

  3. Git使用总结(三):协同开发常见冲突

    1.不同人修改了不同的文件 a.账户A,账户B分别从远端拉取了相同分支     b.账户A修改了main.cpp文件后提交到远端,账户B修改fun.cpp文件提交远端时会报如下错误           ...

  4. ~request库的使用

    官方文档: (中文)http://cn.python-requests.org/zh_CN/latest/ (英文)https://2.python-requests.org//en/master/a ...

  5. eclise -The method onClick(View) of type new View.OnClickListener(){} must override a superclass method 在做arcgis android开发的时候,突然遇到这种错误,The method onClick(View) of type new View.OnClickListener(){} mus

    eclise -The method onClick(View) of type new View.OnClickListener(){} must override a superclass met ...

  6. 【转载】Maven入门实践

    Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢 ...

  7. dotnet Core学习之旅(三):创建项目

    [重要:文中所有外链不能确保永久有效]>创建解决方案 在VSCode上,可以使用来自开源力量的vscode扩展vscode-solution-explorer来增强VSCode对.NET项目的支 ...

  8. Selenium 调用IEDriverServer打开IE浏览器

    Selenium 调用IEDriverServer打开IE浏览器 2016年03月30日 09:49:37 标签: selenium 14836 Selenium 调用IEDriverServer打开 ...

  9. hdu 6661 Acesrc and String Theory (后缀数组)

    大意: 求重复$k$次的子串个数 枚举重复长度$i$, 把整个串分为$n/i$块, 如果每块可以$O(1)$计算, 那么最终复杂度就为$O(nlogn)$ 有个结论是: 以$j$开头的子串重复次数最大 ...

  10. The version of SOS does not match the version of CLR you are debugging

    分析dump文件时,由于客户生产环境与分析dump文件的环境不一致,常常会出现下面的错误 The version of SOS does not match the version of CLR yo ...