我即将开发一个分布式系统。在所有功能中,系统需要分配一些资源(可以在较小的块中分段的大型资源)。为了做到这一点,我想使用Chord / Pastry P2P方法(逻辑环网上的站)。 Pastry有一个非常有趣的资源分配方法:当用户工作站需要发送内容时,使用工作站guid的哈希来查找dht中的密钥,因此会考虑这样的事情:
用户工作站 - > GUID(用户工作站ip上的哈希) - > HASH - >我获得了一个名为X - >的值。使用此散列并在Pastry ring-net中找到具有相同GUID(Pastry节点公钥上的散列)值的站(或直接前任) - >把数据放在那里。
嗯,这意味着理想情况下,每个用户总是在同一个Patry站(Pastry节点)中找到自己的数据。好吧,该协议还镜像邻居的数据,因此用户可以在几个节点中找到它的数据。
这是一个好方法吗?如前所述,是否有任何可能的副作用?
答案 0 :(得分:0)
类似Pastry-P2P的解决方案是理论模型。因此,你应该把它们看作是一种抽象。
这些模型没有考虑对等方的实际实际搜索以及尝试建立与远程对等方的连接时遇到的技术困难(例如,NAT遍历和防火墙问题)。同伴也可能失败。
与下一个对等体的连接成本并不总是1.它可以更多。要回答您的问题,您不仅可以依赖所选模型。
话虽如此,如果散列结果是均匀分布的,那么对等体之间的性能变化将会很低,除非它们特别难以在NAT,代理或防火墙后面到达。