小编典典

分布式哈希表(DHT)的简单基本解释

all

任何人都可以解释 DHT 的工作原理吗?

没什么太重的,只是基础。


阅读 101

收藏
2022-07-30

共1个答案

小编典典

好的,它们基本上是一个非常简单的想法。DHT 为您提供类似字典的界面,但节点分布在网络中。DHT
的诀窍是通过散列该键找到存储特定键的节点,因此实际上您的哈希表存储桶现在是网络中的独立节点。

这提供了很多容错性和可靠性,并可能带来一些性能优势,但它也引发了很多令人头疼的问题。例如,当一个节点因故障或其他原因离开网络时会发生什么?以及当节点加入时如何重新分配密钥以使负载大致平衡。想一想,无论如何,您如何均匀分配密钥?当一个节点加入时,如何避免重新散列所有内容?(请记住,如果您增加存储桶的数量,您必须在普通哈希表中执行此操作)。

解决其中一些问题的一个示例 DHT 是由 n 个节点组成的逻辑环,每个节点负责 1/n
的密钥空间。将节点添加到网络后,它会在环上找到一个位于其他两个节点之间的位置,并负责其兄弟节点中的一些密钥。这种方法的美妙之处在于环中的其他节点都不会受到影响。只有两个兄弟节点必须重新分配密钥。

例如,假设在三节点环中,第一个节点的密钥为 0-10,第二个节点为 11-20,第三个节点为 21-30。如果第四个节点出现并将自己插入节点 3 和 0
之间(记住,它们在一个环中),它可以负责 3 的一半密钥空间,所以现在它处理 26-30,节点 3 处理 21 -25。

还有许多其他的覆盖结构,例如使用基于内容的路由来找到存储密钥的正确节点。在环中定位密钥需要一次在环中搜索一个节点(除非您保留本地查找表,这在数千个节点的
DHT 中存在问题),这是 O(n) 跳路由。其他结构 - 包括增强环 - 保证 O(log n) 跳路由,并且一些声称以更多维护为代价的 O(1)
跳路由。

阅读维基百科页面,如果你真的想更深入地了解,请查看哈佛的这个课程页面,它有一个非常全面的阅读列表

2022-07-30