views:

392

answers:

6

I am looking for a java distributed caching solution. We would like features likes:

  • Distributed
  • Auto-Discovery
  • Redundancy
  • Non-Centralized

We've analyzed a framework like TerraCotta which seems to be everything we would ever want from a caching framework... However, there seems to be a central caching node(s) that is required which become our single-point-of-failure.

Any ideas other than rolling out our own solution?

+1  A: 

Have you looked at Coherence?

We have found it very useful. It is not open source or cheap though.

http://www.oracle.com/technology/products/coherence/index.html

andy boot
+2  A: 

I suggest either JBossCache or EhCache (with a distributed cache listener). I've used both, I like both, and they both fit your requirements.

skaffman
A: 

Terracotta also offers a distributed cache.

Aaron Digulla
Commercial version only isn't it?
cletus
I don't think so if you use the Terracotta ES edition (see http://www.terracotta.org/web/display/enterprise/Products).
Aaron Digulla
+2  A: 

Terracotta recently acquired Ehcache and has released a tight integration of the Ehcache API with the Terracotta clustered store in a simple package and only requires a few extra lines of Ehcache configuration to go from single node to clustered, although you also have to run the Terracotta server process.

Ehcache with the Terracotta ES edition is open source and free to use. Commercial licenses are available if you want support, more scaling, indemnification, patch support, etc.

Terracotta does use a central server array, not a single central server, so there is no single point of failure! You can set up as many hot backup servers as you want and these backup servers can be configured to take over when the active server goes down. With Terracotta FX (commercial product), you can also use multiple active servers.

Alex Miller
The issue with TerraCotta is that in order to have no single point of failure, you require at a bare-minimum 4 machines (or JVM):- 2 for your App- 2 for TerraCottaI'd rather have 4 JVM for my app but with in-JVM caching clustering.
Shadow_x99
+2  A: 

Try Hazelcast. It is an open source clustering and highly scalable data distribution platform for Java. It fulfills all your requirements. Plus it is super easy to use.

Fuad Malikov
Indeed. This is indeed a perfit fit for my requirements. I will start to play with it right away :)
Shadow_x99
A: 

Have you checked NCache? It also has a free edition with limited features. Or you may like to evaluate NCache Enterprise with all its features for 2 months. Here is what NCache offers:

Different caching topologies: Replicated, Partitioned, Partitioned-replica, mirrored and client

InProc or OutProc memory options

Quick add , remove of server nodes during run-time (No cache stoppage or data loss)

Necessary features like expiration, eviction, read/write-through, database sync and more

Get NCache from NCache download page

james