Backpressure in Akka Streams

“Reactive Streams”, whenever we come across these words, there are two things that come to our mind. The first is asynchronous stream processing and the second is non-blocking backpressure. In this blog, we are going to learn about the latter part.

Understanding Back Pressure

According to the English dictionary, back pressure means “Resistance or force opposing the desired flow of fluid through pipes”. To define it in our software context, in place of the flow of fluid we can say the flow of data  “Resistance or force opposing the desired flow of data through software

Asynchronous Programming: A Cautionary Tale

Today I want to share a cautionary war story about how I and my team once got so excited about using asynchronous programming and then so shocked by the results.

A few years ago, we were working on Myntra’s order management system (OMS) at the time which was the source of truth for all order related information and actions in the company. It was a Java REST API based system that used MySQL as a store and used the classic single-thread-per-request model.

Applying Bulkheads and Backpressure Using MicroProfile (Video)

I’ve recorded a video on how to implement 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 defining 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.