【りーきーばけつ】

リーキーバケット とは?

公開:
💡 「溢れさせず、均一に流す」穴あきバケツの流量制御

穴の開いたバケツの比喩で、入力リクエストをキューに溜め、一定速度で処理することで出力レートを平滑化するアルゴリズム。

📌 このページのポイント
リーキーバケット バースト入力 Req Req Req バケツ(キュー) Req1 Req2 Req3 ▼ 底の穴 一定速度で処理 バケツ満杯 → 溢れ破棄 Req(破棄) × 特徴 ✓ 出力は常に一定速度 ✓ 下流サービスを保護 ✗ バーストを許容しない ✗ 満杯で新規は破棄
リーキーバケットのイメージ:底の穴から一定速度で流れ、満杯になると新規リクエストは破棄される
ひよこ ひよこ
リーキーバケットって、なんか穴あきバケツみたいな名前だけど、どんな仕組みなの?
ペンギン先生 ペンギン先生
まさにその通りで、底に穴の開いたバケツをイメージしてほしいんだ。リクエストが水として上から注がれ、穴から一定速度でポタポタ出ていくよ。
ひよこ ひよこ
バケツが満杯になったらどうなるの?
ペンギン先生 ペンギン先生
溢れた水、つまり新しいリクエストは捨てられるよ。これが過負荷時の「溢れ(overflow)」で、下流サービスを守るための仕組みなんだ。
ひよこ ひよこ
トークンバケットと何が違うの?
ペンギン先生 ペンギン先生
トークンバケットはバーストを許容するけど、リーキーバケットは出力が常に一定速度なんだ。動画ストリーミングや音声通話など「滑らかな出力」が必要な場面に向いてるよ。
ひよこ ひよこ
じゃあ一気に大量リクエストが来ても、処理はゆっくりになるんだね!
ペンギン先生 ペンギン先生
そう!バケツがキューの役割を果たして、一時的な突発リクエストをバッファリングしてくれるよ。ただし待機時間が生まれるのでレイテンシには注意が必要だね。
ひよこ ひよこ
実際のシステムだとどんな場面で使われてるの?
ペンギン先生 ペンギン先生
ネットワーク機器のパケット整形やQoS(Quality of Service)の実装で古くから使われてきたよ。APIレート制限では「均一処理」が最優先の場面で選ばれることが多いんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リーキーバケット」って出てきたら「一定速度でしか処理しない穴あきバケツ型レート制御」と思えればだいたいOK!
📖 おまけ:英語の意味
「Leaky Bucket」 = 穴あきバケツ
💬 バケツ底の穴から一定量ずつ水が漏れるように、リクエストを一定速度でしか処理しないため、突発的な大量リクエストも均一に平滑化できるんだよ
← 用語集にもどる