Twemproxy – Proxy For MemCached And Redis
What is Twemproxy useful for? It can
- reduce the number of connections to your cache server by acting as a proxy
- shard data automatically between multiple cache servers
- support consistent hashing with different strategies and hashing functions
- be configured to disable nodes on failure
- run in multiple instances, allowing client to connect to the first available proxy server
- Pipelining and batching of requests and hence saving of round-trips
Salvatore Sanfilippo(@antirez), the creator of Redis, wrote an article about how this can allow a Redis cluster to function even before the Redis-cluster feature is available, without losing much performance in most cases –
What's awesome about Twemproxy is that it can be configured both to disable nodes on failure, and retry after some time, or to stick to the specified keys -> servers map. This means that it is suitable both for sharding a Redis data set when Redis is used as a data store (disabling the node ejection), and when Redis is using as a cache, enabling node-ejection for cheap (simple) high availability.
This Thing Is Fast. Really fast, it is almost as fast as talking directly with Redis. I would say you lose 20% of performances at worst.
My only issue with performances is that IMHO MGET could use some improvement when the command is distributed among instances.
Twemproxy was open-sourced by Twitter earlier this year supporting Memcached and recently added support for Redis as well. Twitter uses cache servers extensively to deliver upto 300k tweets per minute; you can have a look at the presentation Real-Time Delivery Architecture At Twitter for more information.
Twemproxy Code flow
Helen Walton Dec 17, 2014
Heather Hassebroek and Kent McDonald on Positive Politics, Organisational Change, Leadership Engagement and Sharing Experiences through Stories
Heather Hassebroek and Kent McDonald Dec 17, 2014
Monica Beckwith Dec 16, 2014