Amazon MWSのAPIリクエスト制限の仕組み

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

関連記事

コメントを残す

メールアドレスが公開されることはありません。