【バックプレッシャー】

バックプレッシャー とは?

💡 「もうムリ!」と下流が上流にブレーキをかける交通渋滞の信号
📌 このページのポイント
バックプレッシャー:消費者が生産者を制御する Producer 高速で生産 バッファ 満杯! Consumer 低速で処理 高速 バックプレッシャー 「もっとゆっくり送って!」 制御後 速度を合わせて 安定処理 ✓ 溢れなし 制御後 消費者が処理できる量を伝え、生産者がその速度に合わせることで安定動作を実現 Reactive Streams仕様で標準化。RxJava・Project Reactor等が採用
バックプレッシャー:消費者が生産者の速度を制御して過負荷を防ぐ
ひよこ ひよこ

バックプレッシャーって何のことなの?

ペンギン先生 ペンギン先生

データを送る側(生産者)と受け取る側(消費者)の速度差を調整する仕組みだよ。消費者が「処理が追いつかないから少し待って!」と生産者に伝えるイメージだね。

ひよこ ひよこ

速度が合わないとどうなるの?

ペンギン先生 ペンギン先生

消費者のバッファが溢れてデータが捨てられたり、最悪システムがクラッシュしたりするんだ。バックプレッシャーがないシステムは水道の蛇口を全開にしてコップで受けようとするようなものだよ。

ひよこ ひよこ

どうやって「待って!」って伝えるの?

ペンギン先生 ペンギン先生

Reactive Streamsという仕様では、消費者が「次はN件処理できる」とリクエスト数を明示して生産者に伝えるんだよ。生産者はそれ以上送らないように制御するんだ。

ひよこ ひよこ

追いつかないときの対処法は他にもあるの?

ペンギン先生 ペンギン先生

いくつか戦略があるよ。一時的にメモリにためるバッファリング、データを間引くドロップ、そして最も安全な生産者を遅くするスロットリングがあるんだ。状況に応じて選ぶことが大切だよ。

ひよこ ひよこ

どんな場面で使われるの?

ペンギン先生 ペンギン先生

動画ストリーミングやリアルタイムログ処理、IoTセンサーデータの収集など大量データを扱う場面で重要だよ。Spring WebFluxやAkka Streamsといったフレームワークに組み込まれているんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バックプレッシャー」って出てきたら「処理が追いつかないときに上流を抑制する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Back Pressure」 = 背圧・逆圧
💬 流体力学の用語で、パイプの下流から上流へかかる圧力のことを指すんだよ。データ処理でも同じように「下流が詰まったら上流を押し返す」イメージで使われているんだ
← 用語集にもどる