1)スレッドプールの代わりに非同期 I/Oを使用するaws sdkの実装はありますか?
私が知っているわけではありませんが、すでに存在するならば、これを見つけるのは驚きです。
2)現在のクライアントはApache Http Clientを使用していますが、 の非同期実装が見つからない場合は、独自のバージョンを実装して実装します。 [...]よりよい がありますか?
確かに、より良い選択肢があります - AWS SDK for Javaは現在、便利なだけでなくAsync HttpClientを提供Apache HttpComponentsからHttp Clientバージョン4.x(あなたの代わりにレガシー3.1バージョンのJavaDocにリンクされている)、使用しています:
を
Async HttpClientは、HttpCore NIOとHttpClientコンポーネントに基づくHTTP/1.1準拠のHTTPエージェント実装 です。 Apache HttpClientへの モジュールは、 が多数の同時接続を処理する能力がより重要である特別な場合を想定しています。 生データスループットに関しては、のパフォーマンスよりも重要です。 [重点鉱山]
強調し、それが唯一のそれぞれのために促進されるように例を使用していますが、(your commentあたりのように)あなたは、オープン要求がを積み上げる傾向にあることを意味しているAWSへのリクエストの数千人を送信していますですから、これは本当に助けになるかもしれません。
ニーズ_ "CPUボトルネックは、Amazonへのすべての接続である" _いいえ、それは(ネットワーク)I'S/Oボトルネック。 CPUのボトルネックは、定義上は**、CPUは**です。 –
あなたはネットワークがボトルネックですが、そのネットワークI/O上でCPU時間とスレッドを浪費したくありません。 hprofレポートは、CPUのサンプルの大部分がソケットをポーリングする際に発生することを示しています。 –
違いはあなたが得たいものです。非同期I/Oはサービスの待ち時間からあなたを救うことはできません。AWSの要求処理は魔法のように早く終わらせることはありません。しかし、あなたが待っている間に、より意味のあるローカル計算を行うことができます。それはスレッドプールなのです。 – phs