Skip to main content

Keva Proxy approaches

· 2 min read
Tuan Nguyen

Some Proxy-based Clustering solution for Keva right now:

Twemproxy

Twemproxy (nutcracker) is a fast and lightweight proxy for memcached and redis protocol developed by Twitter. It was built primarily to reduce the number of connections to the caching servers on the backend. This, together with protocol pipelining and sharding enables you to horizontally scale your distributed caching architecture

Features

  • Pipelining: Twemproxy enables proxying multiple client connections onto one or few server connections. This architectural setup makes it ideal for pipelining requests and responses and hence saving on the round trip time.
  • Zero copy: All the memory for incoming requests and outgoing responses is allocated in mbuf. Mbuf enables zero-copy because the same buffer on which a request was received from the client is used for forwarding it to the server
  • Sharding: Data are shared automatically across multiple servers

Disadvantage

  • No automatically resharding when add/remove node

Dynomite

Dynomite, inspired by Dynamo whitepaper, is a thin, distributed dynamo layer for different storage engines and protocols. Currently these include Redis and Memcached. Dynomite supports multi-datacenter replication and is designed for high availability. Dynomite was originally a fork of Twemproxy.

Features

  • Everything Twemproxy offers
  • Replication: Dynomite offers replication between multiple cluster.
  • High availability: With replication feature, Dynomite can handle different failure scenarios

Disadvantage

  • No automatically resharding when add/remove node

Summary

Twemproxy is good as a pure proxy that serve read/write request to multiple server while Dynomite can also do that plus replication + HA but it add a bit more complexity since it is more than just a mere proxy. For now, Keva can go with Twemproxy because of it simplicity.