0

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

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

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

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

我不知道哪个是最好的方法。

4

1 回答 1

0

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

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

于 2014-03-15T16:49:12.730 回答