如果听说过 IPFS 的小伙伴,估计也曾听说过“哈希”这个词。在 IPFS 的世界里,“哈希”是一个不能忽略的词语,甚至是这套系统的“基石”。 那么什么是“哈希”?为什么在 IPFS 中这么重要?这东西有什么用? 首先,我们了解一个名词——分布式哈希表。 分布式哈希表(DHT)广泛用于协调和维护有关点对点系统的元数据。 例如,BitTorrent 、Mainline DHT 记录了 torrent 群组中的对等节点分组。 通俗一点来说,点对点就是多线程下载,比如说我们要装满一桶水,打开两个水龙头会比打开一个水龙头要快(水的流速是一致的哈^_^)这个点对点系统也是一样的道理,下载的通道越多,速度也就越快了。而且距离越近,速度也越快。不是有句话“远水救不了近火”,在网络世界里,节点与节点之间的距离也是能影响到数据传输的速度的。 至于元数据呢,就是描述数据的数据,比如说小编有一张照片,在存储的世界里,这张照片就是数据,而元数据就是描述这张照片的一堆类似于“代码”的东西(具体是什么我们下次再聊哈,反正元数据就是用来描述文件、照片、音乐、视频等东西的)。 点对点系统为我们传输数据提供了一种新的方式,这种方式就会有相应的存储方法,这时候,分布式哈希表就上场了。
哈希表的核心就是哈希函数 hash 哈希表其实是一种数据结构,把 KEY 和 VALUE 用某种方式链接起来,使之对应。使用 hash() 函数把一个 KEY 值映射到一个 index 上,即hash(KEY) = index。这样就可以把一个KEY值同某个 index 对应起来。然后把与这个 KEY 值对应的 VALUE 存储到 index 所标记的存储空间中。这样,每次想要查找KEY所对应的VALUE值时,只需要做一次hash()运算就可以找到了。 举个例子:我们从网站上下载电影,首先我们要知道这部电影在哪个网站上有,这样“网站”和“电影”之间就形成了 KEY 与 VALUE 的对应关系,它表示某个网站有某部电影。 现在我们把这种对应关系用哈希表存储起来:有三部电影 A、B、C,它们的 hash() 值分别为:0、1 和 2 号,当我们想要查找 A 这部电影在哪个网站上的时候,只要 hash() 一下这个名字,就可以找到它所在的网站了。 当有大量的这种对应关系的数据需要存储时,这种方法就非常有效,可以快速检索。 也正是因为存储了大量数据,这张哈希表就变得非常重要了,我们能否快速找到所需的数据就看它了。万一这张表丢失的话,后果也许很严重。就像是把所有的东西都存储在一台机器上,当这台机器坏掉了之后,所存储的东西就全部消失了。 幸好,我们有分布式哈希表。分布式哈希表可以把一整张哈希表分成若干个不同的部分,分别存储在不同的机器上,这样就降低了数据全部被损坏的风险。
我们知道当一样东西成为孤品的时候是最珍贵的,因为没有了就没有了,所以孤品是万万不能丢的。 同样,数据也是一样的。我们有了哈希表帮我们快速找到对应的数据,但如果存放这张哈希表的机器发生了故障,就只能含泪说一句:“再见了,我的数据。” 分布式哈希表把一整张哈希表分成若干部分,存储在不同的节点上,这样即使其中一个节点发生故障了,也有其它节点提供存储信息。 此外,在海量数据面前,分布式哈希表分散在不同的节点上,这样我们就可以从距离我们最近的节点处查找到数据,从而获得更快的传输速度。
目前大热的 IPFS 就是采用分布式哈希表作为索引结构的,让我们在 IPFS上存储和传输数据的时候有更好的体验。 在 IPFS 这个分布式的系统中,需要这么一个东西来帮助节点与节点之间发现彼此的内容,而分布式哈希表就是一个很不错的选择。因为这是一个分布式的、容错(和可扩展)的数据结构。节点之间不需要集中协调(每个节点实际上只知道网络的一小部分),并且通过智能冗余,即使节点发生故障导致网络中断,系统仍然可以运行。最后,因为没有一个节点必须知道所有密钥,所以系统可以很好地扩展,并且实际上可以容纳数百万个对等端。 IPFS 是一套由一群技术极客创造出来的系统,里面含有大量技术,今天所讲的分布式哈希表只是其中一种,有兴趣了解 IPFS 的小伙伴们可以继续关注我们的公众号:文储网络 还想了解更多节点云资讯,详情请联系节点云客服(微信号:impool003) —- 编译者/作者:文储网络 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
节点云公开课|什么是哈希?为什么IPFS会用它?
2020-03-16 文储网络 来源:区块链网络
LOADING...