不久前,我使用了 Kademlia (KAD) 协议。我了解它是如何工作的,并且我想到可以使用它来创建分布式数据存储。
无论如何,有一个问题:在 Kademlia 中,每个数据包都有一个“拥有”它的节点。当请求数据时,它会传播到下一个节点,但会被分配一个 TTL。之后,它将被删除。Kademlia 中的想法是,“所有者”节点在数据过期之前刷新其他节点上的数据。
据我了解,即使“所有者”节点离开网络,这也会导致缓存数据 - 但只是暂时的。如果所有者节点再也没有回来,那么从它复制到其他节点的所有数据迟早会过期,因此过一段时间数据就会消失。
虽然这对于人们想要共享文件的 P2P 网络来说是可以的,但对于分布式数据存储来说就不是很好了。
怎么可能处理这个?
或者 - 是否有另一个类似于 Kademlia 的 P2P 协议考虑到这一点?在我的想象中,“完美”的解决方案是如果总是有许多 N 个节点来保存复制的数据。一旦其中一个离开,剩余的 N-1 个节点就会寻找另一个将数据推送到的节点,这样您就会再次拥有 N 个节点。
这样的协议存在吗?