底层技术强力支持 IPFS引领分布式存储未来

许多人每天需要花费大量的时间访问数据,而我们访问的数据主要存储在中央服务器上,随着去中心化创新的蔓延,出现了一些有趣的替代方案,比如说区块链技术。但是,以几美元的价格在以太坊智能合约上存储1kb数据,价格很昂贵,数据存储就没有那么实惠。

而IPFS的诞生解决了这个问题,它利用分布式存储技术颠覆我们现有存储和访问数据模式,打破旧有的存储弊端和中心化限制,让用户更加安全、高效、低成本地存取和共享数据。
在IPFS中,Merkle DAG系统与分布式哈希计算方法是其分布式存储的底层技术。本文将去繁从简,以数据的存取过程为线索,通过对Merkle DAG、分布式哈希的分析,看IPFS如何实现分布式存储。
Merkle DAG
当把文件存储到IPFS系统中时,文件并不是以一个完整的个体被存储,文件数据以平均分割法的方式被切分成若干个256KB大小的块。这些块在经过哈希运算后,也并不是存储在单个中心化的服务器上,而是分开存储在网络中的各个分布式的节点之中,没有节点拥有特权。

这一分布式存储的难点不在于文件的切割或加密,而在于如何把这些被分割的和被分开存储的数据重新组合成一个文件,这正是IPFS协议的第一个关键技术——Merkle DAG(Merkle Directed Acyclic Graph,梅克尔有向无环图)。

Merkle DAG从Git系统(林纳斯·托瓦兹创作的分布式版本控制系统)改造而来,是在Merkle Tree的基础上构建,储存的是哈希值。IPFS上大部分数据对象都是以Merkle DAG的结构存在。
当从网络中获取文件时,先从可信的节点获得文件的Merkle Tree树根哈希值。一旦获得了树根,就可以从其他不可信的节点获取Merkle Tree的各个节点的哈希值。通过可信的树根来检查接收到的Merkle Tree节点,如果Merkle Tree某节点是损坏的或者虚假的,就从其他存储节点获得另一个Merkle Tree节点,直到最终获得一个与可信树根匹配的Merkle Tree。

这样一来,从上至下,直到获得最底层的被切割成小块的数据的哈希,最终形成一个完整的正确的文件。

由于Merkle DAG是基于哈希值的,而哈希值取决于数据块的内容,因此IPFS协议拥有内容寻址的功能(HTTP是基于域名寻址),此外它还有防篡改和去重复的功能。防篡改是因为可以通过检查哈希值来确认数据是否被篡改;去重复是由于相同内容的数据块哈希是相同的,可以去掉重复的数据,节省存储空间。
分布式哈希表
依靠Merkle DAG,可以构建一个数据结构用于实现分布式的数据存储,但还缺最后一步,Merkle DAG存储的哈希值如何定位到具体存储数据的节点,也就是说,应该把数据分配到哪一个网络节点去存储,以及去从哪一个网络节点获得存储数据。DHT(Distributed Hash Table,分布式哈希表)便是用来解决这一问题的方法。

哈希表是一种存储“键值对( Key / Value Pairs)”的容器,它能方便快速地通过key值来获得 value值。在DHT中,key是存储数据的哈希值,通过K/V可以实现数据块与目标节点的映射关系。
哈希表被分割成不连续的块,每个节点被分配一个属于自己的哈希块,也称做区间表,并成为这个哈希块的管理者,当用户存储数据时,系统对数据进行哈希运算,根据哈希运算的结果决定此数据由哪个节点负责储存,并生成哈希表。

当用户提取数据的时候,用同样的算法计算数据的哈希,然后从哈希表获得对应的数据存储位置。

集中式服务器长期以来统治着数据存储领域,虽然它提供的许多服务都是免费的,但我们仍需要权衡个人隐私泄露等问题。

分布式存储系统,相较于集中式系统有许多优势。虽然,集中型模式仍然是当前互联网的主导模式,但随着越来越多的用户和开发人员尝试使用分布式系统,恒讯云相信,分布式存储将成为数据存储的未来。

你可能感兴趣的:(底层技术强力支持 IPFS引领分布式存储未来)