有人能解释一下DHT的工作原理吗?
没什么太重的,只是基础。
有人能解释一下DHT的工作原理吗?
没什么太重的,只是基础。
Answers:
好的,从根本上讲,这是一个非常简单的想法。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)跃点路由为代价,需要更多维护。
阅读维基百科页面,如果您真的想深入了解,请查看哈佛的此课程页面,该页面具有非常全面的阅读清单。