Scaling up memcached to a cluster of shards/partitions requires either distributed routing/partition table maintenance or centralized proxying (and other stuff like detecting failures). What are the popular/typical approaches/systems here? There's software like libketama, which provides consistent hashing, but this is just a client-side library that reacts to messages about node arrivals/departures---do most users just run something like this, plus separate monitoring nodes that, on detecting failures, notify all the libketamas of the departure? I imagine something like this might be sufficient since typical use of memcached as a soft-state cache doesn't require careful attention to consistency, but I'm curious what people do (esp. for Java, Python, and C on Linux, if that matters).
+1
A:
You don't specify your language/platform, but if you're able to use Terracotta, it provides outstanding distributed cache management.
Eric J.
2010-05-16 01:39:02
Added a footnote on platform. Would you mind elaborating on what makes Terracotta (specifically its open-source offerings) stand out / how they compare to typical cache management approaches for memcached?
Yang
2010-05-16 04:58:48
@Yang: Terracotta allows for many different configurations depending on your scalability and availability needs, but the short version is that it provides a distributed cache that's guaranteed to always be current (e.g. if Server A writes back to the cache, Server B will have the updated data, not a stale copy). You don't have to worry about that yourself. The open source offering provides that capability.
Eric J.
2010-05-16 18:43:33