web-dev-qa-db-ja.com

新しい「S3リクエストレートパフォーマンスの向上」の発表はどういう意味ですか

2018年7月17日、最大のパフォーマンスを達成するためにすべてのS3オブジェクトキーの最初の文字をランダム化する必要がなくなったことを説明するAWSの公式発表がありました: https://aws.Amazon.com/about-aws/whats-new/2018/07/Amazon-s3-announces-increased-request-rate-performance /

Amazon S3がリクエストレートパフォーマンスの向上を発表

投稿日:2018年7月17日

Amazon S3はパフォーマンスを向上させ、データを追加するために少なくとも毎秒3,500リクエスト、データを取得するために毎秒5,500リクエストをサポートするため、追加料金なしで処理時間を大幅に節約できます。各S3プレフィックスはこれらのリクエストレートをサポートできるため、パフォーマンスを大幅に向上させることが簡単になります。

現在Amazon S3で実行されているアプリケーションは、変更なしでこのパフォーマンスの向上を享受し、S3で新しいアプリケーションを構築しているお客様は、このパフォーマンスを達成するためにアプリケーションをカスタマイズする必要はありません。 Amazon S3の並列リクエストのサポートにより、アプリケーションをカスタマイズすることなく、S3のパフォーマンスをコンピューティングクラスターの係数でスケーリングできます。プレフィックスごとにパフォーマンスがスケーリングされるため、必要なスループットを実現するために、必要な数のプレフィックスを並行して使用できます。プレフィックスの数に制限はありません。

このS3リクエストレートのパフォーマンスの向上により、以前のガイダンスがすべて削除され、オブジェクトプレフィックスがランダム化され、パフォーマンスが向上します。つまり、パフォーマンスに影響を与えることなく、S3オブジェクトの命名で論理または順次命名パターンを使用できるようになりました。この改善はすべてのAWSリージョンで利用可能になりました。詳細については、Amazon S3開発者ガイドをご覧ください。

それは素晴らしいですが、それはまた混乱しています。 各S3プレフィックスはこれらのリクエストレートをサポートできるため、パフォーマンスを大幅に向上させることが簡単になります。

ただし、プレフィックスとデリミタはバケットのコンテンツを一覧表示するときのGET Bucket (List Objects) AP​​Iの単なる引数であるため、「プレフィックスごと」のオブジェクト取得パフォーマンスについて説明するのはどのように意味がありますか。 GET Bucket (List Objects)を呼び出すたびに、必要なプレフィックスと区切り文字を選択できるため、プレフィックスは事前定義されたエンティティではありません。

たとえば、私のバケットに次のオブジェクトがある場合:

a1/b-2
a1/c-3

次に、バケットの内容を一覧表示するときはいつでも、区切り文字として「/」または「-」を使用することを選択できるため、プレフィックスを次のいずれかと見なす場合があります。

a1/ 

または

a1/b-
a1/c-

ただし、GET Object AP​​Iはキー全体を使用するため、特定の接頭辞または区切り記号の概念はオブジェクトの取得には存在しません。 a1/で5,500リクエスト/秒、またはa1/b-で5,500リクエスト/秒、a1/c-で5,500を期待できますか?

それで、誰かが「各s3プレフィックス」に対して特定のレベルのパフォーマンス(たとえば、データを取得するために+5,500リクエスト/秒)を提案するとき、アナウンスの意味を説明できますか?

12
John Rees

ここで実際にプレフィックスと呼ばれているのは、バケットインデックスの各パーティションを実際に参照する単純化しすぎているようです。インデックスは字句であるため、オブジェクトキーの先頭の文字に基づいて分割が行われます。したがって、それはprefixと呼ばれます。

S3はインデックスパーティションを自動的かつ透過的に管理するため、ここでの「プレフィックス」の正確な定義は実際にはいくらか不正確です。「バケットのワークロードをサポートするためにS3が決定する必要のあるもの」です。 S3はワークロードに応じてインデックスパーティションを分割するため、今日同じ「プレフィックス」を持つ可能性のある2つのオブジェクトは、明日異なるプレフィックスを持つ可能性があり、すべてバックグラウンドで行われます。

現在、a1/a -...とa1/b -...とa1/c -...はすべて1つのプレフィックスである場合があります。しかし、バケットで十分なトラフィックをスローすると、S3はパーティションを分割する必要があると判断する可能性があります。その結果、a1/a-とa1/b-が1つのプレフィックスになり、a1/c-が独自のプレフィックスになることがあります。 (つまり、キー<a1/c-は1つのパーティションにあり、キー> = a1/c-は別のパーティションにあります)。

スプリット動作をトリガーする場所とタイミング、具体的にはどのしきい値が文書化されていませんが、オブジェクトの数やサイズではなく、リクエストの数にのみ関連しているようです。以前は、これらのパーティションは毎秒数百リクエストに制限されていましたが、それは大幅に増加しました。

9