Amazon MWSでは、リクエスト数の上限管理に、leaky bucket algorithmを採用している。
wikipedia: リーキーバケット
用語の説明
スロットル
Amazon MWSで、サーバ側が高負荷にならないように、APIリクエスト回数の制限を作っている。
MWSではこの仕組み(アルゴリズム)を、スロットルと呼んでいる。
リクエストクォーター
リクエスト可能な最大数(この数を超えるとリクエストできない)
リクエストを投げるたびに加算される。
最大リクエストクォーター
各オペレーション毎の上限値
回復レート
増えてしまったリクエストクォーターの減少ペース
一定時間ごとに、Amazon側で加算したリクエスト数が減って行く |
例題
ListOrdersリクエスト 最大リクエストクォーター:6リクエスト 回復レート:5リクエスト/分 |
もし、合計で15リクエストしたい場合…
最初にまとめて6リクエスト実行できる。
7リクエスト目はエラーとなる為、実行できない。
その後1分待つと、5リクエスト実行できるようになる。
さらに1分待っても、Maxが6なので、実行できる上限は5+6=11ではなく、6になる。
最小の時間でリクエストしたい場合は、2分で完了できる。
6request -> sleep 1min -> 6request -> sleep 1min -> 3request
関連記事
コメントを残す