Backpressure - a common problem that affects asynchronous software. Any services that implement a producer-consumer type pattern will be affected by backpressure if they have even a moderate amount of traffic on them. In this video we cover what backpressure is, why it happens, and how to deal with it.
In this example we look at a "high CPU utilization" Kafka application and introduce backpressure support to eliminate it.
Our examples are built around Akka.Streams and Akka.Streams.Kafka, in case you want to learn more:
Introduction to Akka.NET Streams:
https://www.youtube.com/watch?v=yjOQLKh81b8
Introduction to Akka.NET Streams (.NET Notebook): https://github.com/Aaronontheweb/intro-to-akka.net-streams
Akka.Streams.Kafka source code: https://github.com/akkadotnet/Akka.Streams.Kafka
(
0:00) - What is Backpressure?
(
0:19) Real-world Example: Kafka + Akka.NET
(
1:22) How Backpressure Works
(
5:34) Lack of Backpressure Demo
(
8:33) How to Mitigate Backpressure
(
12:22) Adding Backpressure Support
(
14:32) Demo w/ Backpressure Support
(
17:30) Backpressured Workflows