节点如何加入分布式哈希表(DHT)群集?

Dav*_*ner 5 architecture theory p2p distributed-computing

我正在尝试了解分布式哈希表(DHT)范例,因为它适用于P2P或完全分布式计算架构.从理论的角度来看,一旦集群建立起来,它就会对如何设计群集数据和分配工作有所了解.

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

在一个简单的例子中:

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

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

Mar*_*tin 8

这是我在论文中提到的一个问题,我从未找到过我满意的解决方案.问题是在加入网络之前,您需要关于其他一个对等体的某种信息,获得第一个地址是硬比特.

我想出了一些想法:

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

最后一种选择是唯一真正分散的方法.这三者的组合可能是最好的.

断开连接后,如果你被引导到网络中重新建立连接并不困难,只需保存网络中已经存在很长时间的几千个节点的地址,其中至少有一个节点下次仍然在线.