P2P应用

Scroll Down

P2P应用

P2P的介绍

P2P:Peer-to-Peer

  • 没有服务器
  • 任意端系统之间直接通信
  • 节点阶段性接入Internet(很大的随机性)
  • 节点可能更换IP地址
  • 比较复杂,难于管理

文件分发应用

CS架构 vs P2P 架构

从一个服务器向N个节点分发一个文件需要多长时间?

CS架构下,服务器需要串行的发送N个副本,时间随N的增长线性增长

P2P架构下:服务器必须发送一个副本,剩余可由持有该文件的节点进行共享

P2P架构在文件共享上明显低于CS架构,具有非常好的可扩展性

image-20200202235403531

BitTorrent

例如BT(BitTorrent)下载:

image-20200202235728265

  • 文件划分为256KB的chunk
  • 节点加入torrent(一开始没有chunk,但是会逐渐基类)
  • 向tracker注册以获得节点清单,与某些节点建立连接
  • 下载的同时,节点需要向其他节点上传chunk
  • 节点动态的加入或者离开

如何去获取chunk?

  • 给定任一时刻,不同的节点持有文件的不通chunk集合
  • 节点(Alice)定期查询其他相邻节点所持有的chunk列表
  • 节点发送请求,请求获取确实的chunk(优先获取更少的chunk,因为相对于更多的节点来说,更少chunk的节点更有可能离开)

如何发送chunk?

  • Alice向4个邻居发送chunk:正在向其发送Chunk,速率最快的4个,每10秒重新评估top 4
  • 每30秒随机选择一个其他节点,向其放chunk
  • 新选择节点可能加入top4