ECS4.0 では複数リクエストを一度で実行可能
Amazon Search の Back-end を高速化するために AWS3.0 ベースから ECS 4.0 ベースに切り替えるための改変を計画中です。というのも、ECS4.0 には AWS3.0 から切り替えようと思わせる程の大きな利点があることを知ったからです。
「Amazon Web サービス ブログ: [日本語訳]複数のオペレーションを1つにまとめる」に記載されている通り Amazon 公式の仕組みがあります。
Amazon E-Commerce Service (ECS) に対しては、1秒間に1つ以上のリクエストを送信することはできません。できるだけ少ないリクエストで最大のアウトプットを得られるように、ECSにはリクエストをまとめる方法が2つあります。
- バッチ・リクエスト
複数(現在は2までに制限されています)の同じオペレーションのリクエストを1つにまとめることができます。たとえば、書籍の検索とDVDの検索を1つのリクエストで同時に行うことができます。
- マルチオペレーション・リクエスト 複数(現在は2までに制限されています)の異なるオペレーションのリクエストを1つにまとめることができます。たとえば、ItemLookupとItemSearchを1つのリクエストで同時に行うことができます。
試しに、Music - BrowseNode=569170 を Page1-5 までを同時に取得する Request を記述してみました。
http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService
&SubscriptionId=0VD24JC4T98ZHTE9P4R2&AssociateTag=drk7jp-22&Version=2005-03-23
&ResponseGroup=Small,ItemAttributes,Tracks,SalesRank,EditorialReview,Images,Reviews
&ItemSearch.1.ItemPage=1&ItemSearch.2.ItemPage=2&ItemSearch.3.ItemPage=3
&ItemSearch.4.ItemPage=4&ItemSearch.5.ItemPage=5
&Operation=ItemSearch&ItemSearch.Shared.SearchIndex=Music&ItemSearch.Shared.BrowseNode=569170
上記リンクのように、AWS3.0 では5回必要だったオペレーションが1回で処理可能となります。つまり、速度的に5倍改善されるのです。(正確には、1リクエストあたりの処理時間が長くなるので、2〜3倍程度ですが・・・)
う〜ん。素晴らしいですね。願わくば、AWS3.0 と ECS4.0 をもっと互換性を持たせて開発して欲しかったことでしょうか。
05.04.10 追記
知らぬ間に動じ2リクエストに戻ってました・・・orz これぢゃぁ ECS4.0 へ切り替える必要なくなりました。
コメントやシェアをお願いします!