Viktar Charnarutski

Viktar Charnarutski

Never Stop Moving

Must-Read Books for Java Developers

There are few ways to keep your Java programming skills constantly improving. The most popular ones of course is online web-resources with articles, forums and blogs, question and answer online communities.
Another one great source of teaching you new things is books. Here is my list of books advised for all levels of Java programmers.

Memory Usage Optimization for Distributed Cache Cluster

You might find your distributed cache’s cluster hosting different types of caches: write-behind, read-through and cache-aside caches. The more your storage nodes hosts caches, the more memory it requires. So, let’s see what optimizations tweaks could be applied to allow your caches feel well and safe.

Introducing Computing Into Your Data Grid

It might be possible that your data grid’s potential is being utilized very insignificantly. Having it efficiently running as a distributed cache, the most intelligent features are staying idle, and your data grid actually is running in a passive mode.
Introducing a simple computing into your data grid could be really simple and extremely beneficial from performance and functional perspectives.

Bottlenecks of Coherence Datagrid Setup

Load testing of your application on a regular basis is a right way to keep an eye on the app’s performance trends with all configuration and functional changes in place.
However, one performance bottleneck could be hiding after another one, and you won’t know about the issue until the current limitations are fixed.

That means that it might be possible that you’re not able to get your Coherence integration properly loaded if the overall application’s performance is struggling with a slowness caused by, let’s say, poor performance of your DB. So, it’s required to find a way how to check the integration for potential bottlenecks in an isolated manner having all calls made directly to the grid.

Effective Performance Monitoring

Close monitoring of your performance metrics is extremely critical for ensuring that your application, integration services, and infrastructure are available and performing well, so you can keep providing a great customer experience successfully fast.

To have your performance metrics under your control I would recommend to follow the best practises described below.

Performance Engineering Toolkit

Engineers are supposed to have various tools to have their routine work done in the most convenient and efficient way. And the wider expertise area the engineer has, the bigger and more diverse his toolkit is.

Performance engineering requires quite specific and dedicated skills such as: systems architecture and engineering, troubleshooting and analysis, load modeling and testing. And, to apply these skills with high efficiency, performance engineer has to be familiar with different and sophisticated set of tools.

Here is my set of tools with brief functionality description:

Circuit Breaker Design Pattern

Your overall application’s performance might be strongly dependent on how the third-party services you integrated with are performing.

If some remote resource is currently experiencing performance troubles, your calls to this service could be hanged out waiting for a response until a timeout is occurred. Because of that issue the throughput of your service will be drastically decreased, which definitely will impact your end users’ experience.

In this situation a Circuit Breaker mechanism could prevent your system from such cascade performance impact.

Write Behind with Coherence Federated Caching

Having your Coherence cluster running in the Federated Caching mode it could be tricky to introduce a baking-map schema for cached data persistence. Oracle documentation has the following disclaimer for the Write-Behind Caching feature:

For use with Partitioned (Distributed) and Near cache topologies. Replicated and Optimistic caches should not be used.

Does it mean that we have no chance to use this nice feature if have the Coherence cluster running in the Federated Caching mode? Let’s see what can we do here.

Coherence Federated Caching Configuration

With the recent 12.2.1 release of Oracle Coherence it’s became possible to get your cached data synchronized across multiple data centers using Federated Caching data grid functionality.

Unfortunately, Oracle doesn’t provide a clear documentation how to setup the synchronization, so let’s find out all required for proper data replication across your data centers.

Data Synchronization Across Data Centers

If you have your application running in different data centers in active-active manner (traffic is served by all data centers simultaneously), you might want them to use the same datasource for up-to-date data processing.
In-memory data grid could be a good solution for sharing information across multiple data centers in a real time.
And there are several ways how to build up such synchronization.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora