I'm on the search for a good algorithm (no implementation needed) that distributes data in a P2P network. The goal should be to maximize availability.
This is the classic "Gnutella problem" of scalability and is still I believe very much an open problem. One runs into it in WebRTC multicast scenarios. But fortunately there are many vendors such as Twilio that provide cloud solutions ;)<p>Best solution is to overlay a distributed hash table as k-v store over the p2p network. Nodes can then query that instead of each other. You can make your implementation more robust by exploiting and rewarding nodes in the network that have faster net connections, more compute power, etc. Best of luck!<p>OpenDHT: A C++11 Distributed Hash Table implementation<p><a href="https://github.com/savoirfairelinux/opendht" rel="nofollow">https://github.com/savoirfairelinux/opendht</a>
I have found a paper about CRUSH maps so far (from the Ceph project): <a href="https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdf" rel="nofollow">https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06....</a> but I think there is more.