【问题标题】:Chord DHT response method和弦 DHT 响应方法
【发布时间】:2014-04-18 19:35:56
【问题描述】:

我正在用 Go 构建一个 Chord DHT(但是语言部分并不重要)。

我正在尝试找出节点之间的响应行为。如果我想向节点 C 发送后继请求消息,但它必须先到节点 A -> 节点 B,然后到达节点 C。节点 C 响应原始节点的最佳方式是什么。

我想出了不同的方法,但不知道哪种方法更适合 DHT。

  1. 当每个节点发出请求时,它会等待原始 TCP 连接上的响应,这使得响应采用最初采用的反向路径
  2. 发出请求然后忘记它,当节点 C 收到请求时,它会直接将响应发送回原始节点,由请求消息中的发送者 (IPAddress) 字段指示。
  3. 将响应发送给发送方 NodeID,就像发送任何其他消息一样,因此它将围绕 Chord 环进行路由。

我不知道哪种方法最好用。

【问题讨论】:

    标签: networking p2p distributed dht chord


    【解决方案1】:

    在 Chord 中使用路由的唯一原因是查找资源。这就是为什么你不应该只知道访问者和前任者,还应该知道距离为 2^n 的其他节点。通过这种方式,您可以获得O(log N) 的查找性能。详情可以阅读Wikipedia article about Chord

    因此,您应该将源节点的地址附加到您发送给节点 C 的消息中,以便 C 可以直接响应。总体而言,这将具有更好的性能。

    【讨论】:

    • 谢谢,我明白手指桌的必要性。 C 是否直接回复 DHT 的常用惯用方法。如果我想让事情保持匿名,如果消息采用反向路径,即每个节点等待其打开的 TCP 连接上的响应(方法 #1),会不会有很大的性能损失。
    • 据我所知,直接回复是要走的路。如果您考虑在数据中心或任何其他本地网络中部署 chord,您可能会争辩说,采用相同的路径返回并没有高额惩罚,但是当通过 Internet 跨多个数据中心部署 chord 时,这种情况会发生巨大变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多