P2P

2020-07-06  本文已影响0人  再凌

P2P的特征没有统一定义, 但是我认为将下面这几个特征写下来有助于理解

P2P不适合TCP:上行带宽的堵塞 -> 大量丢包 -> 下行速率也上不去

P2P网络发展

第一代: 集中式,保管各个节点的信息. 服务器gg, 整个网络gg
第二代: 纯分布式, 占用资源 不可靠
第三代: 混合型, 每一簇都有一个超级节点, 超级节点之间组成服务器层. 但是超级节点脆弱导致簇内孤立
第四代: 结构型, DHT算法, 节点没有全局视图, 只维护临近后继节点. 文件信息通过特定算法映射到某个节点

纯分布式

纯分布式的问题

  1. 为了保证找到最短路径, 可采取生成树. 但是树容易导致出现关键节点
  2. 信息风暴. 短时间会有大量节点访问信息节点

混合型

因此出现混合型: SN(super node)节点和ON(ordinary node)节点

结构型

目的:能够快速的找到资源所在节点的索引节点
创建两个空间:

chord算法
逐步成环, 新节点加入时调整环.
定期调用fixTable函数, 给每一个节点修正"捷径"
解决复杂度过高的唯一方法是增加每一个节点的"捷径"

Pastry算法
利用了层次化的路由方案, 最长匹配

  1. 如果有节点数4位, 那么每个节点保存四种类型的指针.
  2. 第一种类型指向了第一位不同的其他节点.
  3. 第二种类型指向了第一位相同&第二位不同的节点
  4. 最后一种要记录所有的指针, 因为类型记录的是真实的节点

通俗理解: 从大工去天安门.问大工的人怎么去北京, 问北京人怎么去长安街, 在长安街上问天安门在哪

CAN 算法
将节点编号看做是一个d维的向量, 节点只和自己空间距离为1的节点建立连接.
请求时, 直接发送给距离更近的方向的邻居.
邻居退出时, 接管对方; 有新加入者时, 分自己的空间一半给对方.

文件传输策略

传统传输方法?
稀有优先策略?
随机片段开始?
-> 都没有解决"最终导致均为头部传输"的问题

考虑引入线代的知识"线性无关""线性变换"

但是这样做还有一个问题, 可能随着反复迭代, 后续节点拿到的数据是不可还原的


节点10拿到的数据不可还原成整个文件

因此当某个节点拿到两个片段后, 应该重新运算分片(使得后续分发每一次都是线性无关的)

文件传输策略(视频流)

关键因素: 循环队列大小, 初始播放缓存, 允许最大进度差

上一篇下一篇

猜你喜欢

热点阅读