《分布式与云计算》课程笔记——2.2 Distributed Systems:P2P

目录

1、Napster

2、Gnutella

3、FastTrack

4、BitTorrent


P2P系统是第一个关注节点数量可伸缩性的分布式系统,P2P技术在云计算系统中比比皆是,例如分布式键值存储,使用chord系统进行哈希。

我们通过介绍P2P经典系统来介绍其历史发展和架构变化:

  1. Napster
  2. Gnutella
  3. Fasttrack 
  4. BitTorrent

1、Napster

典型有多个服务器的去中心化结构:decentralized

星型结构,实际上星型结构的服务器多半就是为了提供检索功能。

  • 连接到Napster服务器
    •  上传要共享的音乐文件列表相当于注册。
    •  服务器维护<filename,ip_address,portnum>元组的列表。服务器不存储任何文件。
  • 搜索
    •  发送要搜索的服务器关键字(服务器使用关键字搜索其用户列表)
    •  服务器向客户端返回主机列表(<ip_address,portnum>元组)
    •  客户端ping列表中的每个主机以查找传输速率
    •  客户端从最佳主机获取文件
  • 所有通信都使用TCP(传输控制协议)
    •  可靠有序的网络协议

server管理元数据,即用户指针。Napster虽然有服务器,但是P2P结构而不是集中式的主要原因是,音乐数据保存在peer端,仅把音乐信息在服务器上,用来定位检索,再和对应peer直连。

Napster的查询过程:

Napster系统管理简单,虽然距今20年了,但提出了里程碑的思想,到目前为止,还有很多用同样的运用,比如谷歌的云计算(后面介绍)。

P2P系统都默认节点可以自由加入和离开,所以P2P系统要求不仅查询,还有管理即加入退出越简单越好(最好一条消息搞定),综合来说Napster主要还是得益于有一个集中式服务器。

Napster存在的问题:

  1. 集中式服务器可能导致拥塞。
  2. 单点失败 性能瓶颈。
  3. 无安全性:纯文本消息和密码
  4. 服务器 “间接侵权” ——下一个系统:Gnutella

2、Gnutella

对比Napster架构的区别:1.取消服务器 2.客户端机器之间进行搜索和检索 3.客户端也充当服务器

架构:

标准P2P架构,完全P2P,没有任何中心服务器。

思考:没有服务器,如何找peer?

回答:最初选择用广播,但广域网不可能(后面有突破性技术,可以实现了,但当时没有)。但问题在于广播完全不可控,广播出去后消息的传输完全不可控。

Gnutella在覆盖图中路由不同的消息,所以Gnutella协议有5种主要的消息类型:

  • 查询(搜索)——最重要
  • QueryHit(对查询的响应)
  • Ping(为其他对等点探测网络)
  • Pong(对ping的回复,包含另一个对等方的地址)
  • 推送(用于启动文件传输)

 何时结束广播?在消息头中设置TTL,TTL减到0停止广播。问题:P2P协议里,有很多类似的协议,但这种纯粹的广播协议,太粗糙,基本一定会被废弃掉(TTL的设置没有标准,全凭经验)。

Gnutella查询过程:

本质就是泛洪,泛洪是不确定协议,TTL大小的设置不确定,基本没人用了。Gnutella后续也有一些优化,例如不转发给同一个、Ping-Pong(在网络空闲的时候,系统主动做探查,了解周边,提高性能,尽量避免转发,因为P2P系统节点可以自由加入退出)等等。查找成功后发一个QueryHit message,该消息不需要泛洪,原路返回即可。

传染病协议和gossip协议在P2P中最常用,也是不确定协议。(后面介绍)

 问题:取消服务器导致性能急剧变差。泛洪导致巨大的通讯负载。

3、FastTrack

介于Gnutella和Napster之间的混合系统。类似Gnutella,但有一些节点被定义为超级节点。

人为把节点做服务器。

  • 超级节点存储一个目录,列出附近的子集(<filename,peer pointer>),类似于Napster服务器
  • 超级节点成员身份随时间变化。
  • 任何对等体都可以成为(并保持)超级节点,前提是它已经赢得了足够的声誉。

技术:DHT=Distributed Hash Table  分布式哈希表

  • 哈希表允许插入、查找和删除带有键的对象
  • 性能问题:
    • 负载平衡
    • 容错
    • 查找和插入的效率
    • 地点
  • Napster、Gnutella、FastTrack都是DHT(部分)
  • Chord也是如此,我们接下来要研究的一个结构化的对等系统

区分有结构的P2P系统和无结构的P2P系统:

  • 无结构P2P:邻居随机组织
  • 有结构P2P就类似哈希查找,或者折半查找,无结构P2P即Flooding就类似遍历

用分布式哈希表实现节点的插入删除查找,本质就是折半查找,时间效率为lgn。

时间复杂度对比:

Chord系统(节点形成逻辑环)在现在的P2P中占统治地位。(第五章介绍)

4、BitTorrent

建立在DHT基础上,但不完全是DHT,现在的P2P下载软件。BitTorrent有两个驱动,和napster很像,但性能好得多,实现了分块下载,并发、多线程等高性能技术。

但现在P2P技术效率依然和集中式服务器没法比,一个O(logn)一个O(1)

先获得.torrent种子文件,文本文件,里面实际是一个HTTP链接,代表服务器地址,再访问服务器,拿到peer 列表,最后get peer。

声誉系统在BitTorrent系统中非常常见,鼓励做种子。纯粹BitTorrent软件和非P2P软件的区别:限速。如果限制上传速度,在P2P软件中会自动限制下载速度。所以如果想要更好的下载速度就要提高上传。声誉系统也是在积累是否愿意上传,愿意做种子。建立更好的生态。还有BitTorrent往往呈现爆发式的事态,比如大片刚上映,Peer非常多,但是热点过了后,大家都关闭了BitTorrent,所以BitTorrent系统时效性很大。迅雷不是纯粹P2P,可以只下载不上传(BitTorrent强制上传)

Gn

tella

Napster Searh

Napster Search

N属于apster StructureNapster StructureNapster是P2P而不是集中式的主要原因:音乐数据保存在peer端,但把音乐信息在服务器上,用来定位检索,再和对应peer直连Napster Structure

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日光沉寂的半海21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值