Coherence and Application Grid
By Application Grid Product Marketing on Apr 23, 2009
An important enabling technology for application grid is an in-memory data grid such as Oracle Coherence. Often referred to as distributed caching, this technology complements and extends the capability of an application server or TPM. In simplest terms, it allows an application to use the memory of multiple physical servers as a single, seamless memory space for storing data objects. The graphic below shows how an application running in an instance of WebLogic Server or Tuxedo uses Coherence to aggregate the memory of multiple servers.
Note that in order for the application to use the memory of the other machines, the only thing that needs to be running on the other machines is Coherence itself on a JVM—no additional instances of the application server or TPM are needed. (For simplicity, we don’t depict the application server or TPM as clustered, but such clustering is compatible with and independent of the in-memory data grid).
The immediate implication of this architecture is that the memory available to an application is not limited to the size of physical memory on a single machine. We could have a potentially massive amount of data—e.g. an entire database worth of objects—available in memory, saving time-consuming disk reads and writes. This enables a huge performance improvement for many data-intensive use cases.
Another important but perhaps less obvious benefit here is reliability. With data objects distributed across multiple physical servers, we can have each object replicated in one or more servers such that losing any node in the memory cluster does not result in any loss of data. And because of Coherence’s unique peer-to-peer cluster architecture, no single node plays any sort of “master” or control role and thus there is no single point of failure. In addition to very high reliability, this architecture also means that a Coherence data grid scales linearly from several nodes to thousands of nodes. In other words, there is no increasing overhead or diminishing return: the 1003rd node is the same incremental capacity and cost as the 3rd.
The final important point to touch on here relates to the essence of application grid. A Coherence cluster can be adjusted extremely dynamically. We can add or remove nodes from a live Coherence cluster, and Coherence will automatically redistribute the application’s data objects across the newly-sized cluster. Since the primary capacity constraint for many applications is memory, this near-instant memory adjustment capability provides a fast, efficient, and reliable mechanism to support application grid’s dynamic optimization of shared resources across multiple applications.
This is quickly reviewed in the following short video.