Book Image

Java EE 8 High Performance

By : Romain Manni-Bucau
Book Image

Java EE 8 High Performance

By: Romain Manni-Bucau

Overview of this book

The ease with which we write applications has been increasing, but with this comes the need to address their performance. A balancing act between easily implementing complex applications and keeping their performance optimal is a present-day need. In this book, we explore how to achieve this crucial balance while developing and deploying applications with Java EE 8. The book starts by analyzing various Java EE specifications to identify those potentially affecting performance adversely. Then, we move on to monitoring techniques that enable us to identify performance bottlenecks and optimize performance metrics. Next, we look at techniques that help us achieve high performance: memory optimization, concurrency, multi-threading, scaling, and caching. We also look at fault tolerance solutions and the importance of logging. Lastly, you will learn to benchmark your application and also implement solutions for continuous performance evaluation. By the end of the book, you will have gained insights into various techniques and solutions that will help create high-performance applications in the Java EE 8 environment.
Table of Contents (12 chapters)

Load balancing – pick the best one

Load balancing is about defining how to select the backend node that will process the request. It can be done on the server or client side, but strategies are globally the same. The fact that it is Client or Server is mainly a deployment concern because when the Load Balancer is an instance (software), then you actually add a Client in the chain between the final clients and your middlewares.

At very high level, a Load Balancer can be schematized as follows:

The global idea is to add a layer in between the Client and the Server, which will orchestrate the way the requests are distributed to the servers depending on different strategies. This picture represents four clients calling the same application through a Load Balancer, which will delegate the request processing to three servers (one server will process two of the four client requests...