Last night at the joint London Java Community / JBoss User Group joint meetup, Manik Surtani of JBoss / RedHat presented on Infinispan, a JBoss product designed to be a highly available and scalable data grid platform.
The first thing that struck me about Infinispan is that it is extremely flexible. You can use it standalone or in a peer-to-peer powered cluster; it is primarily an in-memory cache, but it also provides data replication to multiple (configurable) nodes or write-through or write-later support to persistent data stores; it can be run as part of your server application, or run on its own and you can talk to it over Memcached, REST or Hot Rod protocols.
The clustering possibilities are also very interesting. Under the hood, multiple nodes are self-discovering and use a consistent ring hashing mechanism. This means that the application is also elastically scalable, with added or removed nodes only affecting the nodes next to them in the ring instead of the entire set of data having to be rehashed on every addition or removal, which boosts performance at those times.
Search on the data grid is handled by Lucene, which allows you search for objects with specific types and properties across the grid. Interestingly, the Lucene instance internally is scaled by using Infinispan itself for its data storage, meaning the search is scalable as well as the rest of the application.
The team are also working on a map / reduce infrastructure for the platform, which would allow jobs requiring computations with a high number of keys to be offloaded to the cluster for increased performance (this saves you transferring all of the data in the keys to your own application before you do the computations). Currently this is only in the Release Candidate phase for the next release.
Infinispan can also be supported as part of RedHat support contracts, but these releases lack the more bleeding edge features.
Check out the video of the event online at SkillsMatter.