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.
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.
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.