4

如果您创建一个使用分布式哈希表 (DHT) 的新应用程序,则需要引导 p2p 网络。我的想法是您可以加入现有的 DHT(例如 Bittorrent DHT)。

这可行吗?当然,我们假设相同的技术。将 Chord 与 Kademlia 结合显然是不可行的。

如果是,这会被认为是寄生的还是共生的?寄生的意思是它以某种方式与原始用途发生冲突。共生,如果它对两个应用程序都有好处,因为它们相互支持。

4

1 回答 1

5

一般来说:Kademlia 和 Chord 只是抽象设计,而实现提供了不同的功能。如果它的功能集太窄,您将无法将应用程序逻辑映射到它上面。如果它对您的需求过于广泛,如果没有可用的开源库,重新实现可能会很痛苦。

对于 bittorrent:bittorrent DHT 提供 20 字节密钥 -> List[IP,Port] 查找作为其主要功能,其中 IP 由发送方 IP 确定,因此不能用于存储任意数据。这些列表上有一些次要功能,例如布隆过滤器统计信息,但它们对其他应用程序的用处可能更小。

它不提供通用键值存储,至少不作为核心规范的一部分。有一个扩展提案

尽管实现通过将未知消息类型视为节点查找请求而不是仅仅忽略它们为未知消息类型提供了一些基本的前向兼容性,但如果您的应用程序提供一小部分节点,则只有有限的用处,因为您不太可能遇到其他节点在查找期间实现该功能。

如果是,这会被认为是寄生的还是共生的?

这在很大程度上取决于您是否是网络中的“好公民”。

  • 您的实现是否遵循规范,包括常用的扩展?
  • 当涉及到它导致的流量时,与其他节点相比,您的一般用例是否保持在一个数量级之内?
  • 应用程序生命周期是否足够长,不会超出目标 DHT 的预期流失率?
于 2014-11-20T10:19:50.803 回答