# backpressure

A computing technique for controlling resource consumption so fast data sources do not overwhelm stream destinations, using bounded queues in asynchronous processing.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Worker Backpressure (Part 1)

DevFeed: [Worker Backpressure (Part 1)](<https://devfeed.tech/articles/worker-backpressure-part-1-37935.md>)

Original publisher: [Read original article](<https://www.canva.dev/blog/engineering/worker-backpressure-part-1-how-we-taught-our-queue-workers-to-slow-down/>)

Author: Mikalai Barysau

Published: 2026-09-17T00:00:00Z

Content type: article

Language: en

Sources: [Canva Engineering](<https://devfeed.tech/sources/canva-engineering.md>)

Topics: [backpressure](<https://devfeed.tech/topics/backpressure.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [reliability](<https://devfeed.tech/topics/reliability.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [outage](<https://devfeed.tech/tags/outage.md>), [queue](<https://devfeed.tech/tags/queue.md>), [reliability](<https://devfeed.tech/tags/reliability.md>), [worker](<https://devfeed.tech/tags/worker.md>)

### AI overview

Canva describes Worker Backpressure, a reliability mechanism for queue workers that slows processing when dependencies fail and speeds it back up after recovery. During a cloud-provider outage, the mechanism helped prevent failed messages from accumulating on the Dead Letter Queue and avoided an on-call page.

### Source excerpt

How we taught Canva's queue workers to slow down when dependencies fail, then speed back up on their own.

## Broadcasting to 28K SSE Clients (and learning about Go channels)

DevFeed: [Broadcasting to 28K SSE Clients (and learning about Go channels)](<https://devfeed.tech/articles/broadcasting-to-28k-sse-clients-and-learning-about-go-channels-39405.md>)

Original publisher: [Read original article](<https://blog.pranshu-raj.in/posts/implementing-correct-fanout/>)

Author: Pranshu Raj

Published: 2026-07-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pranshu Raj - blog on backend systems, performance and sidequests](<https://devfeed.tech/sources/pranshu-raj-blog-on-backend-systems-performance-and-sidequests.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Server-sent events (SSE)](<https://devfeed.tech/topics/server-sent-events-sse.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [backpressure](<https://devfeed.tech/topics/backpressure.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>), [Prometheus](<https://devfeed.tech/topics/prometheus.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [go](<https://devfeed.tech/tags/go.md>), [grafana](<https://devfeed.tech/tags/grafana.md>), [observability](<https://devfeed.tech/tags/observability.md>), [prometheus](<https://devfeed.tech/tags/prometheus.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [redis](<https://devfeed.tech/tags/redis.md>), [sse](<https://devfeed.tech/tags/sse.md>)

### AI overview

The article describes building a real-time leaderboard in Go that reached 28,232 concurrent SSE connections before exposing a broken broadcast design. It explains the fix using centralized polling, deduplication, fan-out, backpressure handling, and observability with Prometheus and Grafana.

### Source excerpt

A post on progressively getting my server to 28k SSE connections, finding a bug in my implementation of fan out using Go channels and the resulting mental model update.

## Backpressure in Distributed Systems

DevFeed: [Backpressure in Distributed Systems](<https://devfeed.tech/articles/backpressure-in-distributed-systems-39399.md>)

Original publisher: [Read original article](<https://blog.pranshu-raj.in/posts/backpressure/>)

Author: Pranshu Raj

Published: 2026-07-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Pranshu Raj - blog on backend systems, performance and sidequests](<https://devfeed.tech/sources/pranshu-raj-blog-on-backend-systems-performance-and-sidequests.md>)

Topics: [backpressure](<https://devfeed.tech/topics/backpressure.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [backpressure](<https://devfeed.tech/tags/backpressure.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [go](<https://devfeed.tech/tags/go.md>), [latency](<https://devfeed.tech/tags/latency.md>), [memory](<https://devfeed.tech/tags/memory.md>), [messages](<https://devfeed.tech/tags/messages.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This tutorial explains backpressure in distributed systems, including how it occurs when message producers outpace consumers and the resulting risks such as memory exhaustion, dropped messages, lower throughput, network waste, increased latency, and blocked producers. It introduces producer, messaging-system, and consumer roles and relates the topic to a real-time leaderboard project.

### Source excerpt

Understanding what it is, how to deal with it, where it's used and how I handled it in the real time leaderboard.

## A Pattern for Composing Flow Operations

DevFeed: [A Pattern for Composing Flow Operations](<https://devfeed.tech/articles/a-pattern-for-composing-flow-operations-39359.md>)

Original publisher: [Read original article](<https://kt.academy/article/pattern_for_composing_flows>)

Published: 2024-04-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [async](<https://devfeed.tech/topics/async.md>), [backpressure](<https://devfeed.tech/topics/backpressure.md>), [flux](<https://devfeed.tech/topics/flux.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [flux](<https://devfeed.tech/tags/flux.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-coroutines](<https://devfeed.tech/tags/kotlin-coroutines.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [streams](<https://devfeed.tech/tags/streams.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains a pattern for composing Kotlin Flow operations by collecting one cold flow within another flow definition. It discusses sequential processing, asynchronous operations, and the limitations of using internal flow types when composing streams.

### Source excerpt

Extending and operating on top of your existing flows

## From RxJava to Kotlin Flow: Backpressure

DevFeed: [From RxJava to Kotlin Flow: Backpressure](<https://devfeed.tech/articles/from-rxjava-to-kotlin-flow-backpressure-38626.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2020_02_06_from_rxjava_to_kotlin_flow_backpressure/>)

Published: 2020-02-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [backpressure](<https://devfeed.tech/topics/backpressure.md>), [kotlin-flow](<https://devfeed.tech/topics/kotlin-flow.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [Reactive Streams](<https://devfeed.tech/topics/reactive-streams.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-flow](<https://devfeed.tech/tags/kotlin-flow.md>), [reactive-streams](<https://devfeed.tech/tags/reactive-streams.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>)

### AI overview

This article compares backpressure in RxJava and Kotlin Flow from a black-box perspective. It explains how RxJava Flowable uses Subscriber requests to regulate event production and introduces Kotlin Flow's backpressure solutions for developers considering migration.

### Source excerpt

Disclaimer This article unfortunately is not that dive deep (because of complexity of internals of coroutines), but instead trying to compare RxJava and Kotlin Flow mostly as black box with trying to find out differences in behavior and how to migrate from RxJava with its backpressure solution to Kotlin Flow. Hopefully this article will give you direction on where to look at if you decide to migrate to Kotlin Flow.

## Operator fusion in RxJava 2

DevFeed: [Operator fusion in RxJava 2](<https://devfeed.tech/articles/operator-fusion-in-rxjava-2-38620.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2019_11_02_operator_fusion_in_rxjava_2/>)

Published: 2019-11-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [RxJava](<https://devfeed.tech/topics/rxjava.md>), [Library](<https://devfeed.tech/topics/library.md>), [reactive](<https://devfeed.tech/topics/reactive.md>), [backpressure](<https://devfeed.tech/topics/backpressure.md>)

Tags: [2](<https://devfeed.tech/tags/2.md>), [article](<https://devfeed.tech/tags/article.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [flowable](<https://devfeed.tech/tags/flowable.md>), [memory](<https://devfeed.tech/tags/memory.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

This article explains operator fusion in RxJava 2 as an optimization intended to reduce performance and memory overhead. It first reviews Observable, Flowable, their related observer or subscriber types, and backpressure, then introduces the assembly and subscription stages of an Rx chain.

### Source excerpt

Introduction RxJava is a very powerful library, though it has some issues as well. Specifically performance and memory issues, which come from problems library tries to solve and how the solution is designed from technical perspective. In order to minimize overhead in RxJava there are a number of optimizations, which are called "operator fusion". And we'll talk about them in this article. But first let's recap how RxJava reactive types work and what issues they have.