IPFS 原理与实践 (23):IPFS 底层基础 2.2.3

阅读数:1 2019 年 12 月 21 日 18:51

IPFS原理与实践(23):IPFS底层基础 2.2.3

(阻塞策略)

内容简介
这是一部从实现原理和工程实践两个维度深入讲解 IPFS 和 Filecoin 的著作。作者是中文社区内非常有影响力的三位 IPFS/Filecoin 布道者,本书得到了 IPFS&FileCoin 创始人以及 IPFS 官方(协议实验室)的高度认可和强烈推荐。
为 * 大化满足读者需求,书中不仅介绍 IPFS 技术细节、区块链相关知识、Filecoin 项目技术细节,还加入了大量作者们在开发中的经验和技巧。为了适配当下及未来较长时间内读者的实际使用环境,书中所有案例都是基于生态链中较新的软件开发工具和前沿的软件开发技术编写的。
本书分为三大部分:
第一部分 基础篇(第 1 章)
全面介绍了 IPFS 的源起,概念、优势和应用领域,旨在帮助读者了解 IPFS 相关基础背景知识,从宏观层面认识 IPFS 技术所具有的创新性。
第二部分 原理篇(第 2~5 章)
旨在帮助读者深入理解 IPFS 和 Filecoin 的运行原理与工作机制。首先深入分析了分布式哈希表、块交换协议、版本控制、自验证文件系统 Merkle DAG 和 Merkle Tree 等底层基础知识,然后对 IPFS 协议栈中包含的 7 层子协议了进行了剖析,接着解析了 Multi-Format、libp2p、IPLD 三大 IPFS 核心模块,最后用了一整章的篇幅详细剖析了 Filecoin 项目。
第三部分 实战篇(第 6~8 章)
以工程化的方式,从基础至进阶,介绍了 IPFS 技术的实际使用,包括安装、配置、交互、入网、API、内容发布、数据保存、私网搭建等内容,之后通过两个不同风格的实际项目案例向读者展示了基于不同语言所实现的 IPFS 协议栈的使用方法。

不同于 HTTP 协议,BitTorrent 中文件分享完全依赖每个 peer,因此每个 peer 都有义务来共同提高共享的效率。对于合作者,会根据对方提供的下载速率给予同等的上传速率回报。对于不合作者,就会临时拒绝对它的上传,但是下载依然继续。阻塞算法虽不在 P2P 协议的范畴,但是对提高性能是必要的。一个好的阻塞算法应该利用所有可用的资源,为所有下载者提供一致可靠的下载速率,并适当惩罚那些只下载而不上传的 peer,以此来达到帕累托最优。

  1. BitTorrent 的阻塞算法

某个 peer 不可能与无限个 peer 进行连接,通常情况只能连接 4 个 peer。那么怎么控制才能决定选择哪些 peer 连接使得下载速度达到最优?我们知道,计算当前下载速度其实很难,比如使用 20 秒轮询方式来估计,或者从长时间网络流量来估计,但是这些方法都不太可行,因为流量随着时间产生的变化太快了。频繁切换阻塞 / 连接的操作本身就会带来很大的资源浪费。BitTorrent 网络每 10 秒重新计算一次,然后维持连接状态到下一个 10 秒才会计算下一次。

  1. 最优阻塞

如果我们只考虑下载速度,就不能从目前还没有使用的链接中去发现可能存在的更好的选择。那么,除了提供给 peer 上传的链接,还有一个始终畅通的链接叫最优阻塞。不论目前的下载情况如何,它每间隔 30 秒就会重新计算一次哪一个链接应该是最优阻塞。30 秒的周期足够达到最大上传和下载速率了。

  1. 反对歧视

在特殊情况下,某个 peer 可能被全部的 peer 阻塞了,那么很显然,通过上面的方法,它会一直保持很低的下载速度,直到经历下一次最优阻塞。为了减少这种问题,如果一段时间过后,从某个 peer 那里一个片断也没有得到,那么这个 peer 会认为自己被对方“怠慢”了,于是不再为对方提供上传。

  1. 完成后的上传

一旦某个 peer 完成下载任务了,就不再以它的下载速率决定为哪些 peer 提供上传服务。至此开始,该 peer 优先选择网络环境更好、连接速度更快的其他 peer,这样能更充分地利用上传带宽。

IPFS原理与实践(23):IPFS底层基础 2.2.3

购书地址 https://item.jd.com/12665074.html?dist=jd

评论

发布