Some of the most important features of this release, among others, include deadlock-free in-memory transactions, significant improvements to the zero-deployment model, and major performance improvements. All these features have been available in Apache Ignite 1.5 for a while, but now, after many rounds of load testing and bug fixes, have finally received GridGain's ready-for-production stamp of approval.
Deadlocks usually happen when the same objects are concurrently updated in a different order by different transactions. Transactions begin to indefinitely wait on each other to complete, causing deadlock scenarios. Such problems are very difficult to spot and are even harder to debug. In production, they would require a full cluster restart, leading to costly system down times.
The traditional solution to the deadlock problem is to ensure that applications acquire locks in the same order. However, this is easier said than done, especially in large distributed teams. Just imagine how many objects may be updated by a simple "transfer(...)" method on some bank's API. Grouping such calls in a common transaction is almost certain to generate a deadlock.
A much better solution is to drop the locks altogether, which is what Apache Ignite community did. Essentially, all the transactions are given a chance to succeed until it is impossible to logically order some transaction. When this happens, the transaction optimistically fails with an exception and is allowed to be retried. Turns out that this optimistic-serializable consistency model is about 50% faster than its pessimistic counterpart. However, the biggest benefit is that the deadlocks are now impossible.
With this release user objects are always kept in the binary form and are never deserialized on the server side. This makes GridGain servers agnostic to user domain models, allowing users to dynamically add or remove fields to their data types, or create and deploy new data types on the fly. When it comes to executing computations, Ignite provides a distributed class-loader which will automatically undeploy the old computation logic and deploy the new one.
Such combination of the binary protocol together with the distributed class-loader creates a deployment-free cluster environment, where both data model and computation logic can be dynamically updated without any explicit deployment steps or down times.
Pushing Performance Boundaries
With the introduction of the revised compact binary protocol, GridGain and Ignite became a lot faster, beating its nearest data grid competitor, Hazelcast, by over 100% in throughput and latencies. The performance benchmarks are public and can be viewed and downloaded here.
Other features of 7.5 release include OSGI compliance as well as new data streamers, including support for Twitter, MQTT, and Flume real time streams.
The latest release can be downloaded here.