10

我正在尝试了解分布式哈希表 (DHT)范式,因为它适合 P2P 或完全分布式计算架构。从理论的角度来看,一旦集群建立起来,它如何管理集群数据和分配工作就很有意义了。

对我来说最有趣的部分是该架构从不需要某种集中式控制器或协调器(没有单点故障)。但是,我仍在努力理解这个概念的实际执行,特别是集群是如何形成的。如果它是一个完全分布式的系统,节点如何知道如何“加入”已经建立的集群?

在一个简单的例子中:

  • 假设我正在创建一个基于 DHT 模型的 P2P 应用程序
  • 应用程序分布在互联网上(也就是不在同一个网络中),任何公共客户端都可以连接到集群
  • 连接到集群的客户端可以看到集群中的一些(但不一定是全部)其他客户端
  • 未连接的客户端在集群中没有任何地址或客户端名称。

那么,如果没有任何集中式服务器充当信标,或者提供将新客户端引入集群的手段,那么新客户端将如何“连接”呢?

4

3 回答 3

10

这是我在论文中提到的一个问题,但我从未找到满意的解决方案。问题是在加入网络之前,您只需要一些关于其他对等点的信息,获得第一个地址是困难的。

我想出了一些想法:

  • 鼓励同行发布他们的地址,这样您就可以获得可公开访问的已知 IP 列表
  • 运行几个“众所周知的”引导对等点
  • 暴力破解地址空间

最后一种选择是唯一真正去中心化的方法。三者的结合可能是最好的。

一旦你被引导到一个网络断开连接后重新建立连接并不难,只需保存网络中已经长期存在的数千个节点的地址,至少其中一个下次仍然在线。

于 2012-10-25T04:07:17.697 回答
1

据我所知,您可以为 DHT 节点网络创建代理服务器,并为该代理服务器设置影子服务器以实现可靠性。

任何试图加入 DHT 网络的新节点,都与代理对话,代理让它进入完全 P2P 的 DHT 网络。

这样,只有代理服务器必须是公共的,所有其他 DHT 节点都可以拥有它们的私有 IP。

由于应用程序分布在 Internet 上,这可能会给您带来障碍,但​​您始终可以通过代理进行交谈。

于 2019-08-29T02:41:33.973 回答
0

事实上,维护分布式哈希表(DHT)源主干的一方是该 DHT 实例的上帝,因此是主要的单点故障。如果 DHT 从具有已硬编码到 DHT 源中的地址的匿名网络(TorGNUnetChimera等)节点(以下简称:anonnodes)引导,那么该 DHT 被一些“No-Such-代理”不应增加。如果与torsocks结合使用,经典的 wget 可用于 Tor 网络地址。一个例子:

torsocks wget http://xmh57jrzrnw6insl.onion/

为了降低 DHT 通过劫持其一些引导节点而被劫持的风险,可以使用自动投票过程。这个想法是引导节点从硬编码的匿名节点获取地址列表,并且仅从大多数列表中存在的节点引导。如果某些无节点比其他节点更“可信”,那么与其使用每个无节点拥有一票的系统,“更可信”的无节点可以拥有多于一票。

在过去,当计算机不可靠时,投票系统以一种形式使用,而不是不同的投票计算机,同一台计算机在同一组汇编程序命令上运行多次。计算结果进行了比较。最常见的答案被认为是正确的。可能在分布式哈希表的情况下,可能会使用相同的方法:在某个“更长”时间段内多次通过不同的 Tor 会话向不同的引导节点询问相同的问题、已知 DHT 节点的列表。

截至 2014_07_xx,我尚未测试这些想法,但我希望我目前的评论有所帮助。

于 2014-07-23T21:08:45.240 回答