7. Discussion
We have presented Shades, a combined routing/caching scheme that augments Kademlia, yielding a significant reduction in the number of contributing nodes. Through simulations that are based on artificial Zipf-like distributed workloads as well as real traces from YouTube and Wikipedia, we have found that Shades reduces the median number of nodes contributing to each lookup by 22–36% compared to the best of breed among the other schemes in the workloads tested and a 30–40% reduction compared to plain Kademlia. Shades obtains a load reduction on the busiest nodes (hot-spots) of 22–43% with respect to the best scheme and 40–56% compared to plain Kademlia. With reported latencies of 5.8–7.6 s for tuned Kademlia based systems such as [32,37], our improvements can have a significant impact on the user experience of these systems. Shades also generated fewer messages than KadCache and Local, and a similar bandwidth consumption as the best of breed among them. In some workloads, Kaleidoscope offers slightly lower message and bandwidth costs, but the differences are small. Another feature of Shades is that with a small 100 items cache it performs better than any of the other caching schemes even when they are equipped with an unbounded cache. Shades is an open source project [2], implemented as an extension to OpenKad [1]. When using caching, there is always the question of keeping the cache content consistent. There are many applications in which data is immutable, in which case the problem does not exist. In particular, in such systems explicit versioning is often used instead of updates . In other cases, using periodic revalidation against the main copy or deleting items from the cache after a TTL is enough to ensure timely eventual consistency [42].