twemproxy (nutcracker)
twemproxy (pronounced "two-em-proxy"), aka nutcracker is a fast and lightweight proxy for memcached and redis protocol. It was primarily built to reduce the connection count on the backend caching servers.
Build
To build nutcracker from distribution tarball:
$ ./configure $ make $ sudo make install
To build nutcracker from distribution tarball in debug mode:
$ CFLAGS="-ggdb3 -O0" ./configure --enable-debug=full $ make $ sudo make install
To build nutcracker from source with debug logs enabled and assertions disabled:
$ git clone git@github.com:twitter/twemproxy.git $ cd twemproxy $ autoreconf -fvi $ ./configure --enable-debug=log $ make $ src/nutcracker -h
Features
- Fast.
- Lightweight.
- Maintains persistent server connections.
- Keeps connection count on the backend caching servers low.
- Enables pipelining of requests and responses.
- Supports proxying to multiple servers.
- Supports multiple server pools simultaneously.
- Shard data automatically across multiple servers.
- Implements the complete memcached ascii and redis protocol.
- Easy configuration of server pools through a YAML file.
- Supports multiple hashing modes including consistent hashing and distribution.
- Can be configured to disable nodes on failures.
- Observability through stats exposed on stats monitoring port.