つくる 制限の選択
4つを条件で選び分ける
この章で4つの方式を書きました。どれが優れているという順位はありません。
守る相手が違うだけです。今回は条件から1つを選ぶ関数にします。
選ぶ順番があります。譲れない条件から先に見ます。
条件は同時に立ちます。下流が一定しか受けられず、しかも突発を通したいこともあります。
そのとき通したい側を選ぶと、下流が溢れて全部止まります。両立しないときにどちらを捨てるかを、先に決めておきます。
譲れない順
1番目は下流の都合です。外の決済サービスが毎秒10件までなら、それを超える形は選べません。
2番目は利用者の体験です。画面を開いた瞬間の数回を通したいなら、溜められる方式にします。
Python
# 下流が一定 → leaky-bucket
# 突発を許す → token-bucket
# 跳ねを許せない → sliding-window
# どれでもない → fixed-window弱点が問題にならない場面なら選びます。
固定窓は持ち物が一番少ない方式です。通した時刻を覚えず、台をまたいだ置き場所も要りません。
境目の2倍が許せる上限の使い方なら、少ない持ち物のほうが壊れにくくなります。
演習
条件をまとめた辞書を受け取り、4つのうちどれを選ぶかと理由を返します。
要件
- downstream_fixed_rate が True なら "leaky-bucket"、理由は "下流が一定の速さしか受けられない"
- そうでなく allow_burst が True なら "token-bucket"、理由は "開いた瞬間の数回を通したい"
- そうでなく boundary_spike_ok が False なら "sliding-window"、理由は "境目の跳ねを許せない"。どれでもなければ "fixed-window"、理由は "持ち物が一番少ない"
ヒント
編集 ゆめさく編集部