Search code examples
database-replicationhigh-availabilitykey-value-store

Suggested lightweight key-value store for distributing state between many hosts


I'm looking for key-val store that will be used to share some state between multiple hosts.

Goal: - Achive high availability for limited set of data, that need to be accesible on every host/node

Requirements:

  • put/get/incr/decr operations
  • simple numeric data - int/float values, nothing more, no JSON, blobs and so on
  • full copy of dataset on every node or automated failure tolerance
  • automatic adding/removing of hosts with no need to reconfigure application
  • small dataset - only a few megabytes of shared data
  • node traffic is load balanced with user-to-node sticking, so only one node at once will change data related to users that are sticked to that node. This will only change on node failure, but constraint of one master for a set of keys will be keeped, so many readers, one master for own small dataset
  • multiple small VM instances will be used, so it should be lightweight in terms of required memory
  • automated operation - configure once and forget

I've looked at Riak and CouchDB, but they look like too complicated and too heavy

Any suggestions?


Solution

  • After more research I'm heading toward Hazelcast, it provides memcache-like interface and it's easy to configure a simple cluster with automated failover