Hazelcast IMDG 3.12 is Released

We are pleased to announce the production-ready release of Hazelcast IMDG 3.12.

We’ve crushed a lot of bugs, provided general performance improvements, plus we’ve added some great new features (more of which below).

The release by numbers:

  • 676 Issues
  • 784 Pull Requests
  • 47 Committers
  • 168 Days Elapsed

CP Subsystem

The new CP Subsystem provides implementations of Hazelcast’s existing concurrency APIs (locks, atomics, semaphores, latches) using a system based on the Raft Consensus Algorithm. Correct operation of concurrent data structures is a must, especially during network failures. This new feature provides a level of consistency not available in other IMDG and many NoSQL products. As the name of the module implies, these implementations are CP with respect to the CAP principle and live alongside AP data structures in the same Hazelcast IMDG cluster. They maintain linearizability in all cases, including client and server failures, network partitions, and prevent split-brain situations. This also includes reiterated and clarified distributed execution and failure semantics of APIs, as well as multiple improvements on the API level. Last, we introduce a new API, FencedLock, that extends the semantics of java.util.concurrent.locks.Lock to cover various failures models faced in distributed environments.

Hazelcast is the first and only IMDG that offers a linearizable and distributed implementation of the Java concurrency primitives backed by the Raft consensus algorithm.

You can find a more in-depth blog post on this new feature by one of the engineers that wrote it, here

JSON Support

Hazelcast now recognizes JSON data structures when saved as a value to an IMap using the new HazelcastJsonValue type. Once saved, all standard operations can be carried out, such as Predicate Queries and Aggregations. Hazelcast support for in-memory JSON storage provides a 400% increase in throughput when compared to other NoSQL Document Stores. JSON support will be available for all Hazelcast Clients including Java, C#, C++, Python, NodeJS & Go.

Advanced Network Configuration

Before IMDG 3.12, all network communications to a cluster member were handled via the same listener configuration. Now, unique network configurations can be applied to client-member, member-member, wan-wan, rest & memcache endpoints. Practically, this now means that different public addresses and ports can be used, as well as different TLS certificates and TCP/IP configurations per service.

YAML Configuration Support

Cluster and Client configuration can now be expressed in YAML, as well as existing XML, Spring Beans or API Config.

First-Class Support for Kubernetes

A first-class experience for users of Hazelcast in Kubernetes is one of the primary goals of this release. We’ve now made it easier to connect Hazelcast clients that sit outside the K8s network. Previously, clients could only connect via a single member, which added an extra hop and additional latency. Now smart clients outside of the K8s network can connect directly to all members of the Hazelcast cluster, and therefore perform 1 hop operations on data. There are new improvements around the placement of backups within the Hazelcast cluster, assuming correct labeling of the K8s cluster members, Hazelcast can now place backups on different physical hardware. Thus ensuring no data loss when a physical machine in the K8s cluster crashes. Finally, extensive verification work has been carried out to ensure that Hazelcast Enterprise features work smoothly within K8s.

Blue/Green Deployments (Enterprise Only)

Blue/Green Deployments reduce downtime and risk by running two identical Hazelcast® Enterprise IMDG clusters called Blue and Green. One of the clusters provides production services to clients while the other cluster is upgraded with the new application code. Hazelcast Blue/Green Deployment functionality allows clients to be migrated from one cluster to another without client interaction or cluster downtime. All clients of a cluster may be migrated, or groups of clients can be moved with the use of label filtering and black/white lists.

Automatic Disaster Recovery Fail-over (Enterprise Only)

Automatic disaster recovery fail-over provides clients connected to Hazelcast® Enterprise IMDG clusters with the ability to automatically fail-over to a Disaster Recovery cluster should there be an unplanned outage of the primary production Hazelcast cluster.

Add and Remove WAN Publishers (Enterprise Only)

WAN Publishers can now be added and removed in a running cluster via a new REST API.

WAN Replication Performance Improvements (Enterprise Only)

During lab benchmarks, optimisations to the WAN service now show a 300% increase in throughput and average latencies are reduced by 600%.

Java 8

Java 8 is now the minimum required run-time SDK for Hazelcast.

Cloud Discovery

The AWS discovery plugin has been a part of the main Hazelcast distribution jar for some time now, in this release we now add Kubernetes and Google Cloud Platform (GCP). Previously, Kubernetes and GCP discovery were available as separate downloadable plugins.

Ingestion Pipeline Convenience

A new convenience API for rapid populations of the cluster is now available. The Pipelining API manages multiple async ingests.

Client Labelling and Naming Improvements

Clients can now pass labels and instance names to the cluster.

Closing Words

Please download Hazelcast IMDG 3.12 and try it out. We want to hear what you think, so please stop by our Gitter channel and Google Group. If you would like to introduce some changes or contribute, please take a look at our or GitHub repository.