【问题标题】:If a node of a DHT fails, will the values become unavailable?如果 DHT 的一个节点发生故障,这些值会变得不可用吗?
【发布时间】:2020-09-10 10:39:54
【问题描述】:

我正在阅读有关 DHT 的信息,但很难找到有关节点失败时 DHT 值的后果的信息。

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

那么,如果负责这些值的节点发生故障,如何保持这些值的可访问性?

【问题讨论】:

    标签: protocols distributed-computing theory fault-tolerance dht


    【解决方案1】:

    据我了解,如果没有数据冗余(哈希表值),单个节点的故障只会使存储在该节点中的值不可用。

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

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

    这取决于您实际需要多少可用性。没有任何系统是 100% 可靠的。

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

    那么,如果负责这些值的节点出现故障,如何保持这些值的可访问性?

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

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

    【讨论】:

    • 惊人的答案。只是好奇,制作和弦算法的简单启发式方法是什么? stackoverflow.com/questions/66664121/…
    • @nz_21 Q&A 和这个有什么不同?
    • Chord 特有的
    • 是的,但这个答案是关于 DHT 的一般,它包括和弦。那怎么不包括在内呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多