P2P system: FastTrack and BitTorrent
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的更多相关文章
- P2P system: GNUTELLA
P2P system: GNUTELLA GNUTELLA是第一个经论证的分布式的peer-to-peer system. Napster的一个重大问题是涉及到间接侵权,所以GNUTELLA消除the ...
- P2P system: Introduction
P2P system : peer-to-peer system 一些流行的P2P system: Napster, Gnutella 我们为什么研究P2P system 大型的分布式系统有成千上万个 ...
- P2P system: Napster
Napster structure client machines之所以叫peers是因为对于server来说这些machines是平等对待的 当你upload一首歌曲如PennyLane.mp3时, ...
- P2P system: Chord
DHT= Distributed Hash Table store the objects(files) at nodes (hosts, machines) in a cluster. The cl ...
- P2P system:How Chord tackles failures
若有peer failures 怎么办 接上面的例子,如果N32 fail掉了,但是N80的finger table还没有更新,这样query到了N16,它找不到N32,只有N80,这样query就会 ...
- P2P综述
原文参见:http://www.lotushy.com/?p=113 [TOC] 什么是P2P P2P全称是Peer-to-peer.P2P计算或P2P网络是一种分布式应用架构.它将任务或负载分发给P ...
- UDP打洞、P2P组网方式研究
catalogue . NAT概念 . P2P概念 . UDP打洞 . P2P DEMO . ZeroNet P2P 1. NAT概念 在STUN协议中,根据内部终端的地址(LocalIP:Local ...
- P2P/WSN信任建模与仿真平台
1.ART Testbed 该平台是基于多代理的信任仿真平台,官网的介绍如下: The Agent Reputation and Trust (ART) Testbed initiative has ...
- P2P系统,一致性哈希和DHT
数据网格产品经常会使用P2P进行通信,借此机会系统地学习一下P2P网络和其资源搜索策略. 1 P2P网络架构 谈到P2P就涉及到一个概念:Overlay Network(覆盖网络).所谓覆盖网络是应用 ...
随机推荐
- linux 文件描述符表 打开文件表 inode vnode
在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文件的,文件描述符实际上是一个整数.Linux中规定每个进程能最多能同时使用NR_OPEN个文件 ...
- 《ucore lab5》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1: 加载应用程序并执行(需要编码) 题目 do_execv函数调用load_icode(位于kern/process/proc.c中) 来 ...
- jenkins【目录】:目录
jenkins[目录]:目录 GitLab 自动触发 Jenkins 构建 返回
- LeetCode 112. 路径总和(Path Sum) 10
112. 路径总和 112. Path Sum 题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节 ...
- Python21之内嵌函数和闭包
一.内嵌函数 内嵌函数指的是在一个函数体内部定义的函数,可以称它为函数的函数,也就是子函数,外部的函数称之为母函数,就类似局部变量和全局变量 子函数体内定义的变量只在其函数内部有效,但其内部可以调用母 ...
- 【Linux】一步一步学Linux——Linux发展史(01)
目录 00. 目录 01. Linux概述 02. Linux简史 03. Linux主要特性 04. Linux之父 05. Linux相关术语 06. Linux其它 07. Linux应用领域 ...
- MySQL8.0新特性实验1
Server层,选项持久化 mysql> show variables like '%max_connections%';+------------------------+-------+| ...
- IDEA/WebStorm使用笔记
1.使用powershell作为默认终端 #改变powershell策略 Set-ExecutionPolicy Unrestricted -Scope CurrentUser 找到系统的powers ...
- Mac下Sublime Text3激活码
方法1: 终端中打开文件 /etc/hosts,插入如下语句 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 方法2: 在s ...
- Linux判断SSD或HDD + 模拟SSD
判断方法 方法一 判断cat /sys/block/*/queue/rotational的返回值(其中*为你的硬盘设备名称,例如sda等等),如果返回1则表示磁盘可旋转(HDD),返回0,则表示磁盘不 ...