首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果分布式哈希表的一个节点出现故障,这些值会变得不可用吗?

如果分布式哈希表的一个节点出现故障,这些值会变得不可用吗?
EN

Stack Overflow用户
提问于 2020-09-10 18:39:54
回答 1查看 63关注 0票数 2

我正在阅读有关分布式哈希表的资料,但我很难找到当一个节点发生故障时对分布式哈希表的值有何影响的信息。

据我所知,如果没有数据冗余(散列表值),单个节点的故障只会使该节点中存储的值不可用。但是,如果我想使用DHT作为任何系统的存储,我希望该系统能够随时依赖所有存储的可用性,对吧?也许数据冗余在这里被外包为一个独立的问题,但这将意味着分布式哈希表的去中心化方面引入了额外的故障点,这似乎是分布式哈希表的一个巨大的缺点。

那么,如果负责这些值的节点失败,如何保持这些值的可访问性呢?

EN

回答 1

Stack Overflow用户

发布于 2021-01-12 15:49:55

据我所知,如果没有数据冗余(散列表值),单个节点的故障只会使该节点中存储的值不可用。

这是同义反复。是的,如果您选择无冗余,则没有冗余。

但是,如果我想使用DHT作为任何系统的存储,我希望该系统能够随时依赖所有存储的可用性,对吧?

这取决于你实际需要多少可用性。没有一个系统是100%可靠的。

而且DHT通常不用作存储系统。对于长生命周期的批量数据,无论如何都不是这样。它应该被认为是一个动态值查找系统,类似于DNS,但它是分布式和点对点的。

那么,如果负责这些值的节点失败,如何保持这些值的可访问性?

最简单的方法是发布冗余数据,即将其写入多个节点。或者到最接近目标ID的N个节点,或者使用可以选择多个地址的一些其他确定性密钥派生。重新发布数据以补偿存储节点的变动的责任也可能在于数据的发起者。这使得实现的复杂性和安全性/博弈论方面变得简单。

存储节点本身也可以执行冗余重新发布,以确保在原始节点不存在的情况下数据仍然可用。这种方法的问题是,很难在公共网络上正确地保护和激励,特别是当有多个实施时。在封闭的环境中,这更可行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63827934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档