我们的目标:
--基本概念
--架构
--然后,节点在列表上ping 5个节点,并与具有最小RTT的节点连接
服务器对端停止发送文件时自动恢复
拉块
语义上的聚合对象
减少搜索流量并加速搜索过程。
对象具有不同的流行度:以不同的速率请求不同的内容
- 了解p2p体系结构
--基本概念
--架构
- 应用
- 动机
- 架构
- 关键技术
1、对等系统(Peer-to-Peer Systems)
Peer-to-Peer:分散式计算模型
什么是同伴?
信息制作者,传播者或消费者..
为什么它有用?
解决了c / s模型的一些问题
围绕大型服务器的热点
服务器必须始终打开,其IP地址不能更改
客户端资源总量比一些强大的服务器要丰富得多
客户端资源利用率低下
2、文件分发:服务器 - 客户端vs P2P
问题:将文件从一台服务器分发到N个对等体需要多少时间?
3、文件分发时间:服务器端
服务器顺序发送N个副本:
NF / us时间
客户i需要F /di 时间来下载
4、文件分发时间:P2P
- 服务器必须发送一个副本:F / us时间
- 客户i需要F /di时间来下载
- NF位必须上传(聚合)
5、服务器 - 客户端与P2P:例子
客户端上传速率= u,F / u = 1小时,us = 10u,dmin≥us
一些流行的P2P系统
6、P2P的原则
它是应用程序中的应用程序软件之一。 http支持的层- 点对点模式
- 在两个同伴之间直接传输文件
- 覆盖网络是一个抽象网络
- 在这个覆盖网络中,用户可以上传或下载共享文件
7、P2P系统:结构化和非结构化
结构化P2P
- P2P网络拓扑结构受到严格控制,文件不是放置在随机节点上,而是放置在指定位置,以便后续查询更容易满足。
- 例子:CAN(内容寻址网络),Chord,Pastry ......
- 没有精确控制网络拓扑或文件位置。 文件的放置不基于任何拓扑知识。
- 例子:Napster,Gnutella,KaZaA
8、非结构化P2P体系结构
集中模型
- 纳普斯特
- Gnutella,Freenet
- KaZaA,Morpheus
8.1、集中模型
需要服务器来提供目录服务
覆盖网络建设
覆盖网络建设
- P2p软件知道服务器
- 每个p2p应用程序将其IP地址和共享文件的名称注册到服务器->创建数据库
- 需要客户端和服务器之间的心跳,当心跳停止时,相关记录被删除
- 当活动用户需要文件时,访问服务器并查找文件和相应的IP地址
- 直接连接到IP并下载文件
特征:
优点:
- 文件传输是分散的,但定位内容是高度集中的
优点:
- 简单易用
- 服务器必须始终开启并且已知
- 单点故障
- 性能瓶颈
- 侵犯版权
8.2、分散模型:查询泛洪
没有服务器,没有目录
三个步骤:
三个步骤:
- 第一步:构建覆盖网络
- 第二步:查询泛洪 - 查找资源主机
- 第三步:转移
- P2p进程获取经常从其客户端或特殊站点连接到它们的IP地址
- X使用对等计数向所有这些连接发送ping消息
- 邻居(Y)会将ping消息转发给它的邻居 - Z,
- Zs会将包括他们的ip,文件号和文件总大小的消息传给X.
- X连接到Zs(可选)
- 建立覆盖网络等
分散模型:查询泛滥和转移
当用户需要文件时,向其邻居发送查询消息
- 如果匹配存在,则发送回;否则,将此查询转发给它们的邻居 - 查询泛洪
- 匹配时,查询命中消息沿着反向路径逐步返回
- 点对点直接在两个客户端之间转移
分散模式:优点和缺点
优点
- 同行有类似的责任
- 高度分散,没有集中式目录服务器
- 更难关闭
- 过多的查询流量
- 查询半径:存在时可能没有内容
- 需要引导节点
- 覆盖网络的维护很困难
案例:Gnutella
开源的P2P软件
当新对等体想要加入P2P网络时,它与自举服务器联系,提供现有对等体列表的IP地址
新的对等方然后尝试与其中一些对等方进行连接。
- 由Justin Frankel和Tom Pepper开发
- 完全分散
- 用于文件共享
当新对等体想要加入P2P网络时,它与自举服务器联系,提供现有对等体列表的IP地址
新的对等方然后尝试与其中一些对等方进行连接。
8.3、分层模型:查询泛洪
权衡,借鉴以上两种方法
- 没有特殊的服务器,而是需要组长
- 领导者拥有高带宽和高度责任感
- 发布其共享文件
- 数据库形成:文件ID,IP,元数据
- 一个组织喜欢集线器,看图
基于关键字的文件搜索 -> 组长 -> 洪泛
分层模型:组长
组长也称为超级节点
每个对等体都是超级节点或分配给超级节点
超级节点跟踪其所有孩子的内容。
对等查询超级节点,超级节点可以查询其他超级节点(洪泛)
分层叠加网络中的其他技术
请求排队
- 限制并发下载(3-7),更多的是放入队列
- 对上传文件数量多于下载数量的用户优先考虑
- 并行下载来自不同对等方的文件
- 部分来自A并且来自B
分层模型:KaZaA
- 利用异构性,强大而直观的用户界面
- 超过3M的ip对等体共享超过3,000 TB的内容
- 比Napster和Gnutella更受欢迎
- 各种内容:MP3,视频,游戏等
- 提供估计的下载时间
- 频繁的上传者可以在服务器队列中获得优先权
- 关键词搜索
--对关键字查询的响应波澜起伏; 当x响应被发现时停止
KaZaA
- 具有更多连接带宽,更多CPU功率和更多可用性的对等者被指定为超级节点(用户透明)
- 每个超级节点充当迷你Napster集线器,用于跟踪其后代的内容和IP地址
- 每个超级节点有大约200-500个后代; 大约10,000个超级节点(估计)
- 有一个专用的用户认证服务器和超级节点列表服务器
KaZaA覆盖维护
- 软件下载中包含的潜在超节点列表
- 新对等体会经历列表直到找到一些运行的超节点
--然后,节点在列表上ping 5个节点,并与具有最小RTT的节点连接
- 如果超级节点关闭,节点将获得更新列表并选择新的超级节点
KaZaA查询
节点首先向超节点发送查询
- 超级节点响应匹配
- 如果找到x匹配,就完成了。
- 如果总共发现了x个匹配项,则完成。
- 可能由原始超级节点而不是递归
并行下载和恢复
如果在多个节点中找到文件,用户可以选择并行下载
- 用户可以选择最大下载节点数量
服务器对端停止发送文件时自动恢复
- 当前服务器不可用时自动切换到新的下载服务器
分层模型:优点和缺点
方法的优点
- 目录数据库较小
- 少泛滥
- 分散
- 引导节点需要并承担更多责任
- 超节点可能会超载
- 维护覆盖网络
9、文件分发:BitTorrent
- BitTorrent是传输大文件最常用的协议之一
- 已知最大的部署已经有超过一千个同步下载器。
- 据估计,截至2009年2月,它占所有互联网流量(取决于地理位置)的约27-55%。
9.1、文件分发结构
P2P文件分发系统
追踪器(tracker):追踪参与洪流的同伴 洪流(torrent):交换文件块的同事组
Web服务器:跟踪元文件和跟踪器的URL
- 文件分为256KB块。
- 对方加入洪流:向跟踪器注册以获取对等体列表,连接到对等体子集(“邻居”)
- 在下载时,对等上传块到其他同伴。
- 同行可能会来来去去
- 一旦同伴拥有完整的文件,它可能(自私地)离开或(无私地)留下
拉块
- 在任何给定的时间,不同的对等体可能具有不同的文件块子集
- 周期性地,对等体(爱丽丝)要求每个邻居有他们拥有的块的列表。
- 爱丽丝发送她失踪的块的请求
--首先稀有
发送块:聪明的交易算法
爱丽丝目前向四个邻居发送块
- 那些以最高的速度送她的块
- 每10秒重新评估前4名
- 新选择的同伴可能会加入前4名
- 5个同行之外的其他同行被噎住
10、非结构化P2P系统中的问题
- 提高搜索效率
- 最小延迟覆盖拓扑
- 匿名
- 高速缓存
- 完整
- ......
10.1、搜索问题
非结构化网络最为灵活,实用且广泛部署
搜索机制是非结构化P2P网络的主要性能因素
目前的搜索机制效率不高,导致流量过大
搜索机制是非结构化P2P网络的主要性能因素
目前的搜索机制效率不高,导致流量过大
BFS
- 如果目标对象存在,BFS最终会找到它
- 找到最近的同伴
DFS
- 可以下潜找到一个深度目标同伴
- 可能会拒绝搜索树的一个分支并且永远不会返回
10.2、搜索评估标准
标准
- 加载到对等体上
- 在因特网上加载
- 查询响应时间
- 找到罕见的文件
- 减少查询消息的数量
- 减少跳数和每跳的延迟
- 复制罕见文件,使用一些启发式搜索策略
10.3、提高搜索效率的方法
5种方法
- 随机的
- 基于内容索引
- 基于统计
- 基于兴趣
- 缓存和复制
10.3.1、基于随机搜索
扩展环
- 用小的TTL启动洪水,如果搜索失败,则重复发送具有增加的TTL的查询。
- 设置一系列TTL(a,b,c)。 查询从第一个TTL = a开始。 如果查询失败,它将被来自发起者跳跃的所有节点的第二TTL = b洪泛。
- 将相同查询的k个查询消息发送给k个独立步行者。 在每个步行者中,查询消息在每一步被转发到随机选择的邻居。
- BFS和DFS之间的权衡
--搜索流量低于BFS--响应时间大于BFS
10.3.2、基于内容索引的搜索
每个对等体都维护一个文件索引
- 可用于某些节点(文件名IP)
- 类似于url
- 直接返回目标节点的IP地址
10.3.3、基于统计的搜索
统计- 从先前查询中收到邻居的结果数量
- 与邻居连接的延迟
- 每条路径上不同主题的文件数量
- 每个节点都有本地文件的本地索引和路由索引(RI):<文档的路径,路径> <文档,主题>
- 基于“善良”查询路由到邻居
- 选择返回以前查询结果数最多的邻居
- 选择具有特定主题下文件数最多的邻居
对于同行A,B(及其后代)提供的100个文件
高瞻远瞩的查询路由
- 20个属于数据库类别
- 10个属于理论范畴
- 30属于语言类别
- ...
高瞻远瞩的查询路由
10.3.4、基于兴趣的搜索
“同行有一些感兴趣的文件 - >它可能会有其他感兴趣的文件”语义上的聚合对象
减少搜索流量并加速搜索过程。
- 使用快捷方式:潜在目标节点,经常提供良好的搜索结果
--查询首先转发到快捷方式--只有在没有快捷方式返回响应时才会泛滥到所有邻居
10.3.5、高速缓存
节点缓存内容的拷贝(或指向内容的指针)- 对象信息可以从具有副本的节点中推送
- 更多副本导致更短的搜索
- 随着同行数量的增长,存储需求也在增长
- 削弱文件提供商的匿名性
对象具有不同的流行度:以不同的速率请求不同的内容
- 低频率使用的内容被替换