【りーきーばけつ】
リーキーバケット とは?
公開:
💡 「溢れさせず、均一に流す」穴あきバケツの流量制御
穴の開いたバケツの比喩で、入力リクエストをキューに溜め、一定速度で処理することで出力レートを平滑化するアルゴリズム。
📌 このページのポイント
- バケツ底の穴から一定速度でリクエストを処理(流出)
- バケツ満杯になった新規リクエストは溢れとして破棄
- 出力レートが常に一定になるため下流サービスを保護できる
- バーストを許容しない点がトークンバケットとの主な違い
リーキーバケットって、なんか穴あきバケツみたいな名前だけど、どんな仕組みなの?
まさにその通りで、底に穴の開いたバケツをイメージしてほしいんだ。リクエストが水として上から注がれ、穴から一定速度でポタポタ出ていくよ。
バケツが満杯になったらどうなるの?
溢れた水、つまり新しいリクエストは捨てられるよ。これが過負荷時の「溢れ(overflow)」で、下流サービスを守るための仕組みなんだ。
トークンバケットと何が違うの?
じゃあ一気に大量リクエストが来ても、処理はゆっくりになるんだね!
実際のシステムだとどんな場面で使われてるの?
まとめ:ざっくりこれだけ覚えればOK!
「リーキーバケット」って出てきたら「一定速度でしか処理しない穴あきバケツ型レート制御」と思えればだいたいOK!
📖 おまけ:英語の意味
「Leaky Bucket」 = 穴あきバケツ
💬 バケツ底の穴から一定量ずつ水が漏れるように、リクエストを一定速度でしか処理しないため、突発的な大量リクエストも均一に平滑化できるんだよ