Deliver data as needed with Red Hat JBoss Data Grid and Azul Zing
As data needs grow, developers need more sophisticated methods of access for distributed databases. In this article, Simon Ritter explores two ways developers can deliver data: Red Hat JBoss Data Grid and Azul Zing.
I remember many, many years ago when I was studying Computer Science at university, one of the things I was taught was the concept of caching. The fundamental idea of a cache is simple: it’s something that stores data so that when you need that data, it can be served faster. Typically, this takes the form of small, high-speed storage areas built into a processor or placed very close to it. Often you will see reference to terms like L1, L2 and L3 caches, where the size is inversely proportional to the speed of access.
To scale this idea up to the kind of Big Data applications we frequently see today, caching now also takes the form of in-memory data grids. The idea is the same but because more data is being stored the method of access needs to be more sophisticated. To deliver both high performance and ease of use a distributed database is provided with advanced functionality like map/reduce, querying, processing for streaming data, and even transaction capabilities.
Red Hat JBoss Data Grid
All of these features and more are provided by the Red Hat JBoss Data Grid, which is designed to deliver the highest levels of performance for mission-critical big data analytics applications. To achieve the levels of scalability required by the most demanding of enterprises, this has been written in Java to leverage the advantages of the Java Virtual Machine (JVM).
Having a high performing in-memory data grid infrastructure is part of a solution but if the JVM that it runs on can’t deliver the performance required, applications will not be able to meet the demanding service level agreements (SLAs) customers need.
This is why Azul and Red Hat have teamed up to deliver a solution that addresses all the requirements of in-memory data grids using the Zing JVM.
Zing is based on the OpenJDK reference implementation source code and is a fully conformant implementation of the Java SE standard as defined by the relevant Java Specification Request (JSR). It is a drop-in replacement for traditional JVMs with no requirement to change any code and simplified deployment through reduced dependency on complex command line flags for configuration.
Zing differs from a traditional JVM by replacing two core pieces of functionality:
- The garbage collector (GC). All conventional GC algorithms will end up running full compaction of the heap when allocation rates or fragmentation becomes too high. The C4 algorithm, used by Zing, can continuously compact the heap concurrently. This enables the data grid to continue delivering results, eliminating the long pauses that plague other JVMs, which can significantly reduce the effectiveness of the cache functionality. The Zing JVM scales to a maximum heap size of 8Tb with no increases in GC pause time; this is ideal for a data grid.
- Part of the Just-in-Time (JIT) compiler. As a cross-platform language, Java is compiled to bytecodes rather than native instructions for a specific machine architecture and operating system. To deliver performance that matches, or even exceeds that of natively compiled applications written in languages like C and C++ the JVM uses two internal JIT compilers.
- Zing replaces the traditional C2 compiler with an improved version called Falcon. This is based on the open source LLVM project supported by many companies including Intel, AMD, Microsoft, ARM and NVidia. This compiler is able to take advantage of newer processor architecture features such as the AVX 512 vectorization support and deliver better throughput, providing results from the data grid even more quickly.
By using Zing to support the JBoss Data Grid product, Red Hat are ensuring that their customers are provided with the best possible combination of components. This ensures that your big data applications will have access to data when its required meaning your customers get what they need when they need it.
If you’re building these types of application, why not try JBoss Data Grid and see how much it can improve your application performance?