IPFS - Content Addressed, Versioned, P2P File System (draft 3)
摘要 星际文件系统是一个点对点分布式文件系统, 旨在使用相同的文件系统连接所有的计算设备。在某种情形下,IPFS很类似Web,不过IPFS可以被看作一个独立的使用Git仓库来交换对象的BitTorrent集群。换句话说,IPFS提供了一个高吞吐量的以内容可寻址的块存储模型,具有内容寻址的超链接。这便形成了广义的Merkle DAG数据结构,这种数据结构可以构建成一个文件版本系统,区块链,甚至一个永久性Web。IPFS使用分布式哈希表,激励化的块交易模型和自我认证的命名空间。IPFS没有单独的故障节点,节点之间不需要完全信任基础。
1.介绍 关于构建全球分布式文件系统,已经有许多尝试。一些系统已经取得了重大的成功, 而一些却完全失败了。在学术尝试中, AFS[6] 就是成功的例子,并且得到广泛的应用。 然而,其他的[7, ?] 却没有成功。学术界之外,最成功的系统是面向音视频媒体的点对点文件共享系统。 最值得注意的是, Napster, KaZaA 和BitTorrent[2] 部署的文件分发系统可以支持1亿用户同时在线。即使今天, BitTorrent 也维持着每天千万节点的活跃数[16]。
相比学术文件系统,这些应用获得了更多的用户和文件分发,然而这些应用并没有被设计为基础设施。虽然这些应用已经取得了成功的回报,但目前还没有出现为全球提供低延迟和分散式分发的广义的文件系统。
也许是因为HTTP这样“足够好“的系统已经存在。到目前为止,HTTP作为最成功的“分布式文件系统“的协议已经大量部署,再与浏览器相结合,具有巨大的技术和社会影响力。它已经成为互联网传输文件的事实标准。然而,他没有采用最近15年的发明的数十种先进的文件分发技术。 从一方面讲, 由于向后兼容的限制和当前模式的强烈投入, 进化目前的Web基础架构几乎不可能。但从另一个角度看,自从出现了HTTP,新的协议已经出现并被广泛使用。目前的难题缺是升级设计:不会降低用户体验情况下引入新功能,以增强目前的HTTP Web。
长期使用HTTP的业界已经消失了,因为移动小文件是非常便宜,即使是具有大量流量的小型组织。但是,随着新的挑战,我们正在进入数据分发的新时代:
(a)托管和分发PB级数据集 (b)计算跨组织的大数据 (c)按需量或实时媒体流量大规模高清晰度定义 (d)大规模数据集的版本化和链接 (e)防止重要文件的意外消失等。 许多这些可以归结为“大量数据,无处不在”。由于关键功能和带宽问题,我们已经放弃了不同数据的HTTP分发协议。下一步是使它们成为一部分的Web本身。
2.背景 本节回顾了IPFS所采用的点对点系统的重要技术特性。
2.1 分布式哈希表 分布式哈希表(DHTs)广泛的使用于定位和维持点对点系统的元数据。例如BitTorrent的MainlineDHT技术跟踪torrent集群的对等节点。
2.1.1 Kademlia DHT Kademlia[10] 是一个广泛流行的DHT,提供了一下特点:
大规模网络下高效查询:查询平均访问O(log2N)节点。(例如,1000万节点的网络需要20跳查询) 低协调开销:优化控制消息发送到其他节点的数量。 使用长时间在线节点来抵抗各种攻击。 广泛使用于点对点应用中,包括Gnutella和BitTorrent,形成了超过2000万个节点的网络[16]。 2.1.2 Coral DSHT 虽然一些对等文件系统直接在DHT中存储数据块,“不应该存储在节点的数据存储在节点会浪费存储和带宽”[5]。Coral DSHT通过以下三种方式扩展了Kademlia:
Kademlia将值存储在距离其key最接近(使用XOR-distance)的节点中。这不考虑应用数据的局部性,忽略“远处”可能已经拥有此数据的节点,并强制“最近”节点存储它,无论它们是否需要。这将浪费了大量的存储和带宽。相反, Coral 存储了地址, 该地址的对等节点可以提供相应的数据块。 Coral将DHT API的get_value(key)换成了get_any_values(key)(DSHT中的“sloppy”)。这将依旧工作,是因为Coral用户只需要一个(工作)的对等节点,而不是完整的列表。作为回报,Coral可以仅将子集分配到“最近”的节点,避免热点(当密钥变得流行时,重载所有最近的节点)。 另外,Coral根据区域和大小组织了一个称为clusters的独立DSHT层次结构。这使得节点首先查询其区域中的对等体,“查找附近的数据而不查询远程节点”[5]并大大减少查找的延迟。 2.
Read more