【バックプレッシャー】
バックプレッシャー とは?
最終更新:
💡 受け取れる量に合わせて、上流のデータを調整する
データを受け取る側の処理能力に合わせて、送る側から流れる量を調整する仕組み。受信側にデータが無制限にたまることを避けるために使う。要求数を伝える方式や、書き込みを待つ方式などがある。
📌 このページのポイント
- 受信側が処理できる量に合わせて、送信を調整する
- Reactive Streamsでは、受信側が要求した数を超えて要素を送らない
- Node.jsのストリームでは、書き込みを一時的に待つ仕組みがある
- ためる・捨てる対処と、上流への流量制御は区別する
バックプレッシャーって何をするの?
受け取る側の処理能力に合わせて、上流から流れるデータ量を調整するんだ。送り続ける速さと処理する速さが合わないと、待ちデータが増え続けることがある。その増加を抑えるための仕組みだよ
バッファが満杯になってから止めるの?
それだけではないよ。Reactive Streamsでは、受信側がrequest(n)で受け取る数を要求する。送信側は累計の要求数を超えて要素を送らないので、満杯になってから必ず「遅くして」と伝える方式とは違うんだ
他にはどうやって調整するの?
ためたり捨てたりすれば、同じこと?
バッファにためるだけでは、上流の量は減らないよ。捨てる方法はデータが失われるので、用途に合うか考える必要がある。上流への制御を守ることや、ためる量の上限も大切。導入するだけで、すべての過負荷や障害を防ぐ保証ではないんだ
まとめ:ざっくりこれだけ覚えればOK!
「バックプレッシャー」って出てきたら「処理が追いつかないときに上流を抑制する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Back Pressure」 = 背圧・逆圧
💬 下流の状態が上流の送り方に影響するイメージの言葉。データ処理では、受け取れる量に合わせて流れを調整する意味で使うよ