Friday, 23 April 2010
4.1.0. ALPHA3 is out
I’ve just cut Infinispan 4.1.0.ALPHA3, codenamed Radegast. This release contains a number of fixes and bugs reported in 4.0.0 Starobrno as well as earlier alphas, and is quite likely to be the last alpha before a feature-complete 4.1.0.BETA1 is released.
A detailed changelog is available. The release is downloadable in the usual place.
If you use Maven, please note, we now use the new JBoss Nexus-based Maven repository. The Maven coordinates for Infinispan are still the same (groud id org.infinispan, artifact id infinispan-core, etc) but the repository you need to point to has changed. Setting up your Maven settings.xml is described here.
Enjoy! Manik
Tags: release alpha radegast
Friday, 12 March 2010
No time to rest, 4.1.0.Alpha1 is here!
"Release quick, release often", that’s one of our mottos at Infinispan. Barely a couple of weeks after releasing Infinispan 4.0.0.Final, here comes 4.1.0.Alpha1 with new goodies. The main star for this release is the new server module implementing Memcached’s text protocol.
This new module enables you to use Infinispan as a replacement for any of your Memcached servers with the added bonus that Infinispan’s Memcached server module allows you to start several instances forming a cluster so that they replicate, invalidate or distribute data between these instances, a feature not present in default Memcached implementation.
On top of the clustering capabilities Infinispan memcached server module gets in-built eviction, cache store support, JMX/Jopr monitoring etc… for free.
To get started, first download Infinispan 4.1.0.Alpha1. Then, go to "Using Infinispan Memcached Server" wiki and follow the instructions there. If you’re interested in finding out how to set up multiple Infinispan memcached servers in a cluster, head to "Talking To Infinispan Memcached Servers From Non-Java Clients" wiki where you’ll also find out how to access our Memcached implementation from non-Java clients.
Finally, you can find the API docs for 4.1.0.Alpha 1 here and note that this is an unstable release that is meant to gather feedback on the Memcached server module as early as possible.
Cheers, Galder
Tags: release memcached
Tuesday, 23 February 2010
Infinispan 4.0.0.Final has landed!
It is with great pleasure that I’d like to announce the availability of the final release of Infinispan 4.0.0. Infinispan is an open source, Java-based data grid platform that I first announced last April, and since then the codebase has been through a series of alpha and beta releases, and most recently 4 release candidates which generated a lot of community feedback.
It has been a long and wild ride, and the very active community has been critical to this release. A big thank you to everyone involved, you all know who you are.
Benchmarks
I recently published an article about running Infinispan in local mode - as a standalone cache - compared to JBoss Cache and EHCache. The article took readers through the ease of configuration and the simple API, and then demonstrated some performance benchmarks using the recently-announced Cache Benchmarking Framework. We’ve been making further use of this benchmarking framework in the recent weeks and months, extensively testing Infinispan on a large cluster.
Here are some simple charts, generated using the framework. The first set compare Infinispan against the latest and greatest JBoss Cache release (3.2.2.GA at this time), using both synchronous and asynchronous replication. But first, a little bit about the nodes in our test lab, comprising of a large number of nodes, each with the following configuration:
-
2 x Intel Xeon E5530 2.40 GHz quad core, hyperthreaded processors (= 16 hardware threads per node)
-
12GB memory per node, although the JVM heaps are limited at 2GB
-
RHEL 5.4 with Sun 64-bit JDK 1.6.0_18
-
InfiniBand connectivity between nodes
And a little bit about the way the benchmark framework was configured:
-
Run from 2 to 12 nodes in increments of 2
-
25 worker threads per node
-
Writing 1kb of state (randomly generated Strings) each time, with a 20% write percentage
+ | Reads | Writes |
---|---|---|
Synchronous Replication | ||
Asynchronous Replication |
As you can see, Infinispan significantly outperforms JBoss Cache, even in replicated mode. The large gain in read performance, as well as asynchronous write performance, demonstrates the minimally locking data container and new marshalling techniques in Infinispan. But you also notice that with synchronous writes, performance starts to degrade as the cluster size increases. This is a characteristic of replicated caches, where you always have fast reads and all state available on each and every node, at the expense of ultimate scalability.
Enter Infinispan’s distributed mode. The goal of data distribution is to maintain enough copies of state in the cluster so it can be durable and fault tolerant, but not too many copies to prevent Infinispan from being scalable, with linear scalability being the ultimate prize. In the following runs, we benchmark Infinispan’s synchronous, distributed mode, comparing 2 different Infinispan configurations. The framework was configured with:
-
Run from 4 to 48 nodes, in increments of 4 (to better demonstrate linear scalability)
-
25 worker threads per node
-
Writing 1kb of state (randomly generated Strings) each time, with a 20% write percentage
+ | Reads | Writes |
---|---|---|
Synchronous Distribution |
As you can see, Infinispan scales linearly as the node count increases. The different configurations tested, lazy stands for enabling lazy unmarshalling, which allows for state to be stored in Infinispan as byte arrays rather than deserialized objects. This has certain advantages for certain access patterns, for example where remote lookups are very common and local lookups are rare.
How does Infinispan comparing against ${POPULAR_PROPRIETARY_DATAGRID_PRODUCT}?
Due to licensing restrictions on publishing benchmarks of such products, we are unfortunately not at liberty to make such comparisons public - although we are very pleased with how Infinispan compares against popular commercial offerings, and plan to push the performance envelope even further in 4.1.
And just because we cannot publish such results, that does not mean that you cannot run such comparisons yourself. The Cache Benchmark Framework has support for different data grid products, including Oracle Coherence, and more can be added easily.
Aren’t statistics just lies? We strongly recommend you running the benchmarks yourself. Not only does this prove things for yourself, but also allows you to benchmark behaviour on your specific hardware infrastructure, using the specific configurations you’d use in real-life, and with your specific access patterns.
So where do I get it?
Infinispan is available on the Infinispan downloads page. Please use the user forums to communicate with us about the release. A full change log of features in this release is on JIRA, and documentation is on our newly re-organised wiki. We have put together several articles, chapters and examples; feel free to suggest new sections for this user guide - topics you may find interesting or bits you feel we’ve left out or not addressed as fully.
What’s next?
We’re busy hacking away on Infinispan 4.1 features. Expect an announcement soon on this, including an early alpha release for folks to try out. If you’re looking for Infinispan’s roadmap for the future, look here.
Cheers, and enjoy!
Manik
Tags: release benchmarks final
Tuesday, 02 February 2010
Infinispan 4.0.0.CR4
In the run-up to preparing Infinispan for a public release, we’ve been busy on a number of interesting things, which have led to a decision to release another CR instead.
The main driver behind this is that we’ve finally managed to get our hands on a sizeable cluster large enough to truly test scalability. Expect interesting public benchmarks to be published soon, watch this space. (I recently blogged about some local-mode benchmarks)
To enable such benchmarks, we’ve renewed efforts on building out the Cache Benchmarking Framework. This framework was originally a part of JBoss Cache’s source tree, and has now been extracted and migrated to SourceForge. We welcome others contributing additional plugins for more distributed cache/data grid products, as well as more tests and access patterns.
Finally, extensive community feedback over the past few weeks have resulted in lots of bugs fixed and performance patches applied. Also, we finally have a beta release of JClouds and an all-new CloudCacheStore for folks to play with.
The release is available in its usual place. I look forward to getting feedback on this release, this time truly a release candidate, i.e., one that, unchanged, could very well become the final release.
Your last chance for feedback on this release, people!
Cheers
Manik
Tags: release candidate release
Monday, 05 October 2009
Another beta for Infinispan
Rather than releasing a CR1 so soon, I have decided to cut another beta instead, mainly due to the sheer volume of changes since the last beta. So here is what you have to look forward to. A pile of bugs fixed thanks to reports made by you, the community. A couple of packages upgraded, including JGroups (to 2.8.0.CR2) and JBoss Marshalling (to 1.2.0.CR4). And two new modules introduced: a tech preview of the query API, and the new RESTful server module, thanks to Navin and Michael accordingly. A full list of issues addressed in this release is available on JIRA.
We’re pushing hard for a series of CRs now, to solidify the codebase and make sure it exceeds expectations in performance, scalability, stability and ease of use. Your feedback has always been valuable, please keep it coming!
This release is available for download in the usual place, and the wiki should be used as your primary port-of-call for documentation. Discuss issues on the user forum, and don’t forget to tweet about Infinispan! :-)
Enjoy
Manik
Tags: beta release
Saturday, 13 June 2009
High-five for Alpha5
I’ve just released Infinispan 4.0.0.ALPHA5. Yes, I know you were expecting Beta1 already, but it is taking a little longer than anticipated. Anyway, Alpha5 has got some cool new stuff you’d definitely want to check out.
-
Migration scripts for EHCache
-
Internal performance improvements
-
Newer, faster JBoss Marshalling
As you know, your feedback is important to us, so please do download and try out what will hopefully be the last Alpha before we start releasing Betas.
Cheers Manik
Tags: release alpha
Tuesday, 02 June 2009
Another alpha for Infinispan
What’s new? Galder Zamarreño’s recent contribution of ripping out the marshalling framework Infinispan "inherited" from JBoss Cache and replacing it with JBoss Marshalling has made the marshalling code much leaner, more modular and more testable, and comes with a nifty performance boost too. What’s also interesting is that he has overcome issues with object stream caching (see my blog on the subject) by using JBoss Marshalling streams which can be reset. This too provides a very handy performance boost for short lived streams. (See ISPN-42, ISPN-84)
Mircea Markus has put together a bunch of migration scripts to migrate your JBoss Cache 3.x configuration to Infinispan. More migration scripts are on their way. (See ISPN-53, ISPN-54)
Vladimir Blagojevic has contributed the new lock() API - which allows for explicit, eager cluster-wide locks. (See ISPN-48)
Heiko Rupp has contributed the early days of a JOPR plugin, allowing Infinispan instances to be managed by JBoss AS 5.1.0’s embedded console as well as other environments. Read his guide to managing Infinispan with JOPR for more details.
And I’ve implemented some enhancements to the Future API. Now, rather than returning Futures, the xxxAsync() methods return a NotifyingFuture. NotifyingFuture extends Future, adding the ability to register a notifier such that the caller can be notified when the Future completes. Note that Future completion could mean any of successful completion, exception or cancellation, so the listener should check the state of the Future using get() on notification. For example:
NotifyingFuture<Void> f = cache.clearAsync().attachListener(new FutureListener<Void>() {
public void futureDone(Future<Void> f) {
if (f.get() && !f.isCancelled()) {
System.out.println("clear operation succeeded");
}
}
});
The full change log for this release is available on JIRA. Download this release, and provide feedback on the Infinispan user forums.
Onward to Beta1!
Enjoy, Manik
Tags: release
Thursday, 14 May 2009
Alpha3 ready to rumble!
So I’ve just tagged and cut Infinispan 4.0.0.ALPHA3. (Why are we starting with release 4.0.0? Read our FAQs!)
As I mentioned recently, I’ve implemented an uber-cool new asynchronous API for the cache and am dying to show it off/get some feedback on it. Yes, Alpha3 contains the async APIs. Why is this so important? Because it allows you to get the best of both worlds when it comes to synchronous and asynchronous network communications, and harnesses the parallelism and scalability you’d naturally expect from a halfway-decent data grid. And, as far as I know, we’re the first distributed cache - open or closed source - to offer such an API.
The release also contains other fixes, performance and stability improvements, and better javadocs throughout. One step closer to a full release.
Enjoy the release - available on our download page - and please do post feedback on the Infinispan User Forums.
Cheers Manik
Tags: release asynchronous