Back-Pressure

Context

Producer-consumer model is very helpful to decouple the system components. However, the situation is quite often in which producer produces jobs more rapidly than consumers can consume them. It's a challenge to manage a large number of unconsumed jobs.

Back-pressure is one of the strategies that can mitigate the problem of quick-producing meeting slow-consuming.

Patterns

Back-pressure is a feedback mechanism that allows systems to sense the burst job load and gracefully respond to caller.

Some common-seen strategies includes:

Solutions

The system need to degrade itself when under heavy load. Back-pressure can help way from such case.

Rx

Rx Observables are responsive objects listening on queue-alike data structures. They could be overwhelmed by other fast-producing Observables.

See more Backpressure throttling algorithm on how to fine-tune the parameters of Rx operators.

Conclusions

Applying back-pressure is one effective technique to handle high-load. We tend to handle already accepted requests and transactions first, and reject those can't be handled. If you have many components and the producing-consuming speed might mismatch, consider back-pressure.

References