夜光序言:

我觉得泪水是世间最不需要强忍的东西,有时候我也想忍住,让别人觉得我很坚强,但忍不住的时候我就不会忍,因为后来我明白坚强只是一种内心,爱哭不是不坚强,哭过之后还能站起来,能清醒地明白该走什么样的路,做什么样的事,我要做的是这样的人。

正文:

P2P
1P2P 文件分发的可扩展性

P2P 体系结构中,其中每个 peer 节点都能够帮助服务器来分发文件。也就是说,当一个 peer 节点接收到文件数据时,它可以利用自己的上载能力重新将数据分发给其他 peer 节点。

在以上例子中,在分发的开始,只有服务器拥有文件。为了使这些 peer 节点得到该文件,服务器必须经其接入链路至少发送一次该文件。因此,最小分发时间至少是
F/us
客户机 i 下载时间是
F/di 
系统的总上载能力等于服务器的上载速率加上每个 peer 节点的上载速率,即
us + ∑ui
系统必须向 N 个 peer 节点的每个交付(上载)NF 比特,因此最小分发时间至少是
NF/(us + ∑ui)

将这三个观察结合起来,我们可以得到 P2P 系统的最小分发时间,记为 dP2P
dP2P = max { F/us, F/min(di) , NF/(us + ∑ui)}

显然,对干 P2P 体系结构,文件分发是可以自我扩展的,因为 peer 节点除了是下载消费外还能进行上传提供服务。随着 N 的增大,∑ui也会增大,所以 dP2P会保持稳定。


2 .BitTorrent

BitTorrent 是一种用于文件分发的 P2P 协议。

在一个 Torrent 中,peer 节点彼此下载等长度的文件块,块长度通常为 256KB。当一个peer 节点开始加入一个 Torrent 时,它没有文件块。随着时间的推移,它将累积越来越多的文件块。

当它下载文件块时,也为其他 peer 节点上载了多个文件块。peer 节点一但获得了整个文件,它可以(自私地)离开 Torrent,或(大公无私地)留在 Torrent 中并继续向其他 peer节点上载文件块。

当一个 peer 节点 Alice 加入 Torrent 时,追踪服务器随机选择一些 peer 节点,并将这些peer 节点的 IP 地址发送给 Alice。


Alice 持有这些 peer 节点的列表,试着与该列表上的多个 peer 节点创建并行的 TCP 连接。

这里称所有与 Alice 成功地创建 TCP 连接的 peer 节点为“邻近 peer 节点”。

随着时间的推移,其中的一些 peer 节点可能离开,而其他 peer 节点可能试着与 Alice创建 TCP 连接。因此,邻近 peer 节点将随着时间而改变。


在任何时刻,每个 peer 节点都拥有来自某文件块的子集,且不同的 peer 节点具有不同的文件块子集。Alice 周期性地(经 TCP 连接)询问每个邻近 peer 节点它们所具有的块列表。

如果 Alice 有 L 个邻居,那么她将获得 L 个块列表。因此,Alice 将对她当前还没有的块发出请求(仍通过 TCP 连接)。


Alice 使用一种称为最稀罕优先的策略,其思路是根据她没有的块从她的邻居中确定最稀罕的块(最稀罕的块就是在她的邻居中拷贝数量最少的那些块),并优先请求那些最稀罕的块。按照此方式,最稀罕的块更迅速地重新分发,其目标(大致)是均衡每个块在洪流中的拷贝数量。

如果多个用户向她请求文件块,为了决定她响应哪个请求,BitTorrent 使用了一种对换算法。其基本思想那些当前能够以最高的速率供给她数据的邻居具有较高的优先权。Alice对于她的每个邻居都持续地测量她们之间连接的速率,确定以最高速率流入的 4 个邻居。然后,她将数据块发给这 4 个邻居。每过 10 秒,她重新计算该速率并可能修改这 4 个 peer节点。更重要的是,每过 30 秒,她要随机地选择一个另外的邻居并向它发送块。

在 PZP 文件共享中,搭免费车(free-riding)是一个常见的问题,这是指 peer 节点从文件共享系统中下载文件而不上载文件。BitTorrent 的对换算法有效地消除了这种搭免费车问题。


3 分布式散列表

分布式散列表在 P2P 网络中实现了一个简单的数据库。

数据库只包含 key-value 对例如:键可以是社会保险号,值可以是相应的人名;在这种情况下,键一值对的例子如(156-45- 7081 , John ),或者键可以是目录名(例如,电影、唱片和软件的名字),值可以是存储内容的 IP 地址。当用键来查询数据库,如果存在键值对,数据库就返回相应的值。


可以为每个 peer 节点分配一个标识符 ID,其中每个标识符是一个(0, 2n-1)范围内的整数,n取某些固定的值。使用散列函数把每个键(如社会保险号)映射为(0, 2n-1)范围内的一个整数。

散列函数是一种多对一的函数,使两个不同的输入可能具有相同的输出(相同的整数),但是具有相同输出的似然性极低。

由于每个 peer 节点具有了一个整数标识符,这时就可以将 key-value 对分配给具有最近ID 的 peer 节点.,一般最近的 peer 节点是指 key 是最邻近的 peer 节点的后继,例如

假设有 8 个 peers: 1,12,13,25,32,40,48,60
如果 key = 53,那么这个 key-value 对将分配到 60 号 peer 节点
如果 key = 60,那么这个 key-value 对将分配到 60 号 peer 节点
如果 key = 61,那么这个 key-value 对将分配到 1 号 peer 节点

环形 DHT


为了处理规模的问题,将这些 peer 节点组织成环状,每个 peer 节点仅知道它的直接
successor 和 predecessor。查找某个键值对时,在这个环状网络中进行时钟顺序查找。

为了加速查找,又建立了 peer 节点之间的 shortcut 连接。

此时每个 peer 节点保留 predecessor, successor, short cuts 的 IP 地址。例如 peer12 进行键值 53 的查找从原来的 12-13-25-32-40-48-60 需要 7 个消息减少 12-48-60 的 3 个消息。

在 DHT 数据库中,peers 节点可能加入和离开(churn),但是由于每个 peer 知道两个后继的地址。只要每个 peer 周期性的 ping 两个后继以检测活性,如果直接后继离开, 那么选择下一后继为当前直接后继。


夜光:计算机网络笔记(十二)相关推荐

  1. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  2. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  3. ROS学习笔记十二:使用roswtf

    ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...

  4. 《C++游戏开发》笔记十二 战争迷雾:初步实现

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9475979 作者:七十一雾央 新浪微博:http:// ...

  5. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  6. 面渣逆袭:三万字,七十图,详解计算机网络六十二问(收藏版)

    大家好,我是老三,开工大吉,虎年第一篇,面渣逆袭系列继续! 这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 建议大家收藏了慢慢看,新的一年一定能够跳槽加薪,虎年& ...

  7. 面渣逆袭:计算机网络六十二问,三万字图文详解!速收藏!

    这次给大家带来了计算机网络六十二问,三万字,七十图详解,大概是全网最全的网络面试题. 基础 1.说下计算机网络体系结构 计算机网络体系结构,一般有三种:OSI 七层模型.TCP/IP 四层模型.五层结 ...

  8. 【Visual C++】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理

    相信大家都熟悉<仙剑奇侠传98柔情版>的人机交互方式,用的仅仅是键盘.在那个物质并不充裕的时代,一台配置并不高的电脑,一款名叫<仙剑奇侠传>的游戏,却能承载一代人对梦想的追逐. ...

  9. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

  10. 计算机网络(十二)IPv6介绍

    计算机网络(十二)IPv6介绍 1.IPv6的必要性 2.IPv6的特点 3.IPv6中IP地址的标记方法 4.IPv6地址的结构 5.全局单播地址 6.链路本地单播地址 7.唯一本地地址 8.IPv ...

最新文章

  1. 哈佛CS50撕书教授在家录了一套4K网课,你准备好电话簿了吗?
  2. 我的软件工程之路(二)
  3. Java8学习系列之匿名函数Lambda
  4. 本田加入通用+Cruise组合,老牌汽车制造商“抱团”发展自动驾驶技术
  5. Linux下的微秒级定时器: usleep, nanosleep, select, pselect
  6. .net winform 的 OnKeyDown 与 方向键
  7. 系统设计和机器学习算法
  8. element step控件点击事件
  9. win10注册表开机自启
  10. 《Linux内核设计与实现》读书笔记(四)- 进程的调度
  11. 积木机器人拼装图恐龙图纸_‎App Store: 机器人积木模型--恐龙积木拼装对战游戏...
  12. Q1营收7740万元亏损大幅收窄,转型自救的途牛能否追赶携程艺龙?
  13. 【VR游戏】封神榜传
  14. 从0到1 用腾讯云低代码开发一个问卷小程序(基于模版中心二开)
  15. Linux UART编程 驱动蓝牙芯片
  16. 单片机胡汉才第四版答案_单片机课后习题答案__胡汉才编
  17. 算法梳理(二)逻辑回归算法梳理
  18. 智能家居创意DIY之智能灯泡
  19. No module named _bz2
  20. Baxter环境安装

热门文章

  1. hbase 基本语法
  2. 意义第一:何谓以学为导向的学习
  3. python爬取腾讯视频弹幕_网络爬虫实战(四):爬取腾讯视频电视剧弹幕-Go语言中文社区...
  4. 先进制造技术的出现正急剧改变着制造业的产品结构和生产过程
  5. 从 0 到 1 设计、编码、搭建个人知识付费应用(Remix 全栈框架、集成支付和用户、React、TailwindCSS、Prisma)
  6. php 商城运费计算,ecshop商城运费计算移植到app
  7. 2020年下半年系统集成项目管理工程师上午真题及答案解析
  8. 我的Linux与ROS的不眠不休:从入门到入土(六)——自定义话题消息类型。
  9. 数据库安装(MySQL子库--MariaDB)
  10. android 19版本下载,想看手机版下载安装