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
関連記事
コメントを残す