I’ve recorded a video how to implement the bulkheads and backpressure using MicroProfile Fault Tolerance. The idea behind bulkheads is to split applications into several execution units that isolate functionality. In enterprise Java applications this typically means to define multiple thread pools.
Applying backpressure to clients results in either adding information about the current pressure on the system to the client so that they will react to it, or to explicitly deny the request with a temporary error response.
In this video, I’ll show how MicroProfile Fault Tolerance enables us to apply the same principles, with even less configuration, by combining JAX-RS asynchronous resources, completable futures,
You’ll find the code in the GitHub project and further explanation in the MicroProfile Fault Tolerance specification. To read more on the topic of how to craft resilient enterprise applications, also have a look at the following article.
It seems that the term backpressure caused some confusion with the usage within reactive architectures. In these videos, I’m referring to how to make the service behavior and responsiveness more predictable to limit queue sizes and applying backpressure to the load generated by the clients that connect to our service. This is not meant in a way that a consumer (client) signals the producer (server) to slow down data emission, but to when our server is threatened to become overloaded with the client load.
The whole purpose of defining and constraining multiple resource pools is to being predictable to whether our service is able to respond within a given time. If that is not the case, we want the service to immediately deny the request without unnecessarily consuming too much of the client’s time.
Published on Java Code Geeks with permission by Sebastian Daschner, partner at our JCG program. See the original article here: Applying Bulkheads And Backpressure using MicroProfile (Video)
Opinions expressed by Java Code Geeks contributors are their own.