【问题标题】:Implementation of fair DHT公平 DHT 的实施
【发布时间】:2016-01-16 19:34:01
【问题描述】:

我正在考虑一种基础架构,其中许多用户连接到一台服务器,并使用哈希存储键值对。

存在许多这样的服务器,每个服务器都为自己的用户存储键值对。我们假设键不冲突。

服务器 S1 上的用户 U1 可能会使用密钥 K2 查找位于服务器 S2 上的对象(用户还不知道这一点)。我们需要某种分布式哈希表来将键映射到 server_addr,这样我们就可以在该服务器中查询对象。

这样的DHT有很多,比如Tapesry、Chord等,我一直在想怎么做这样一个公平的系统。

例如在具有三台服务器的系统中,服务器 S1 可能有 1000 个用户,S2 有 2 个用户,S3 有 5 个用户。如果我们假设用户每人创建 10 个对象,并且我们均匀地分配密钥空间,那么服务器 S2 和 S3 将分别存储大约 3500 个密钥,这比他们自己的密钥消耗量大一到两个数量级。

我希望 S1 能够为其在 DHT 中公平分享的密钥负责。

我的一个想法类似于审计系统,每个对等方都询问其他人他们在 DHT 中存储了多少密钥,然后检查他们是否也对这部分密钥空间负责。

但是,这会导致占用大量带宽来获取每个节点的消耗。

还有其他想法吗?

【问题讨论】:

  • 个人价值有多大?
  • 为了论证,我们可以说一个值是每个键 4KB。

标签: distributed p2p dht peer


【解决方案1】:

有几种可能的方法

什么都不做

在野外 DHT 并不是完全同质的环境。一些节点比其他节点拥有更多的资源(嵌入式设备与胖服务器)。一些节点比其他节点创建更多活动。

节点可以根据自己的能力简单地提供服务(路由、存储),并在达到其能力时拒绝请求(通过丢弃它们或返回否定响应)。

发出请求的节点会将它们视为故障并绕过故障点。

您基本上应该检查节点消耗的资源比其他节点多几个数量级的情况是否普遍到足以保证任何平衡。

自愿措施

导致更多流量的节点可能只是为了提供更多资源而设计。例如。它可以运行分散在整个键空间中的多个虚拟节点,从而为更多键提供存储和路由。

这对于具有高正常运行时间、带宽和低延迟的服务器级机器来说应该特别容易。

执法

这就是棘手的地方。在分布式系统中,您没有信任或监管权限。一个节点必须先证明它提供了足够的服务,然后您才能为其请求提供服务。

第一个明显的衡量标准是其他节点证明它确实提供了它声称的服务。但这仅提供了它提供某些服务的证据,并没有说明提供的资源和消耗的资源之间的比率。而且您还需要一种机制来验证它确实存储了它声称的数据,而不仅仅是返回正面响应然后丢弃它们。

因此,您需要会计、验证和信任网络,因为 1-hop 凭证可能不够用。

正如您所见,复杂性迅速爆发。


您可能应该着眼大局,确定网络中的攻击者和好公民可能拥有的激励措施。

  • 消耗过多的资源有什么好处
  • 验证的成本是多少(复杂性、人力、与阻止恶意流量相关的流量开销)
  • 异常值会真正造成多大的负担?

等等

【讨论】:

  • 谢谢 :-) 这让我深思。我不知道在这里提到一个关于新软件的非常模糊的想法是否合适,但这里有一个链接(mods,请随意删除!):rawgit.com/husnoo/opencaesar/master/website/index.html。我有一些想法(我读过的论文)来处理强制存储材料的公平性,但是你给了我一个关于密钥空间的想法:主机在密钥空间中提供的每个虚拟节点都必须证明它来自通过使用相同的主机私钥签署一个随机数来同一主机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 2011-11-05
相关资源
最近更新 更多