目录
P2P系统是第一个关注节点数量可伸缩性的分布式系统,P2P技术在云计算系统中比比皆是,例如分布式键值存储,使用chord系统进行哈希。
我们通过介绍P2P经典系统来介绍其历史发展和架构变化:
- Napster
- Gnutella
- Fasttrack
- 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存在的