注意:
現在COSでは、下層インデックス分散メカニズムによって高QPSを実現しています。よりハイパフォーマンスなQPSが必要な場合は、お問い合わせください。日常的なファイルの取り扱いでは過度に集中するインデックスストレージ方式を使用せず、このドキュメントに沿って行うことを推奨します。
ここでは、リクエスト速度パフォーマンスの最適化のTencent Cloud Object Storage(COS)上でのベストプラクティスについて検討します。
Tencent Cloud COSがご提供する代表的なワークロード能力は、PUTリクエストで1秒あたり30000、またはGETリクエストで1秒あたり30000です。ワークロードが上記の能力を超える場合は、このガイドに従ってリクエスト速度パフォーマンスの拡張と最適化を行うことをお勧めします。
説明:リクエストロードとは1秒間に送信されるリクエスト数のことであり、同時接続数ではありません。すなわち、数千の接続数を維持すると同時に、1秒間に数百の新規接続リクエストを送信できることを意味します。
Tencent Cloud COSはパフォーマンスの拡張によるリクエスト速度の向上をサポートしています。リクエストのうち、GETリクエストの負荷が高い場合は、Tencent Cloud CDN製品を併用することをお勧めします。詳細については、ドメイン名管理をご参照ください。バケットの総合リクエスト速度が1秒あたり30000 PUT/LIST/DELETEリクエストを超えることが見込まれる場合は、ワークロードへの対応を準備し、リクエスト制限を回避できるよう、お問い合わせいただくことをお勧めします。
説明:混合リクエストロードが偶発的に1秒あたり30000を超えることがあるだけで、突発的に1秒あたり30000を超えることがない場合は、このガイドに従わなくても構いません。
大量のオブジェクトをアップロードする必要がある場合は、選択するオブジェクトキーによってパフォーマンスの問題が起こる可能性があります。Tencent Cloud COSのObjectキー値のストレージメソッドについて、以下で簡単にご説明します。
Tencent Cloud COSの各サービスリージョンでは、バケット(Bucket)とオブジェクト(Object)のキー値をインデックスとして保守しています。オブジェクトキーはUTF-8バイナリーシーケンスに従ってインデックスの複数のパーティション内に保存されます。タイムスタンプの使用やアルファベット順など、大量のキー値がある場合、キー値の存在するパーティションの読み取り書き込みパフォーマンスが上限に達する可能性があります。バケットパスexamplebucket-1250000000.cos.ap-beijing.myqcloud.com
の例では、以下の例のような場合にインデックスパフォーマンスが上限に達する可能性があります。
20170701/log120000.tar.gz
20170701/log120500.tar.gz
20170701/log121000.tar.gz
20170701/log121500.tar.gz
...
image001/indexpage1.jpg
image002/indexpage2.jpg
image003/indexpage3.jpg
...
業務の代表的なロードが1秒あたり30000リクエストを超えている場合は、上記の例のようなシーケンシャルなキー値の使用を避ける必要があります。業務上、シーケンシャルな番号または日付・時刻などの文字をオブジェクトキーとしなければならない場合は、いくつかのメソッドを使用してオブジェクトキー名にランダムなプレフィックスを追加することで、複数のインデックスパーティションでのキー値管理を実現し、ロード集中時のパフォーマンスを向上させることができます。キー値のランダム性を上げるためのいくつかのメソッドを以下に記載します。
注意:以下に記載するメソッドはすべて、単一のバケットへのアクセスパフォーマンスを向上させる可能性があるメソッドです。業務の代表的なロードが1秒あたり30000リクエストを超えている場合は、以下のメソッドを実行すると同時に、ワークロードへの対応を事前に準備できるよう、お問い合わせをいただく必要があります。
オブジェクトキーのランダム性を最も直接的に向上させる方法です。オブジェクトキー名の一番前にハッシュ文字列をプレフィックスとして追加します。例えばオブジェクトをアップロードする際、パスのキー値に対しSHA1またはMD5ハッシュ計算を行い、数桁の文字を選択して、プレフィックスとしてキー値名に追加することができます。通常は2~4桁の文字ハッシュプレフィックスがあれば十分です。
faf1-20170701/log120000.tar.gz e073-20170701/log120500.tar.gz 333c-20170701/log121000.tar.gz 2c32-20170701/log121500.tar.gz
注意:Tencent Cloud COSのキー値インデックスはUTF-8バイナリーシーケンスをインデックスとしているため、オブジェクトのリストアップ(GET Bucket)操作を実行する際、元の完全な20170701プレフィックス構造を得るために65536回のオブジェクトリストアップ操作が必要となる可能性があります。
オブジェクトキーの検索のしやすさを維持したい場合は、ファイルタイプについていくつかのプレフィックスを列挙してオブジェクトのグループ化を行い、同一の列挙値のプレフィックスが、存在するインデックスパーティションのパフォーマンスを共有できるようにすることができます。
logs/20170701/log120000.tar.gz
logs/20170701/log120500.tar.gz
logs/20170701/log121000.tar.gz
...
images/image001/indexpage1.jpg
images/image002/indexpage2.jpg
images/image003/indexpage3.jpg
...
同一の列挙プレフィックスにおいて、依然として高いアクセスロードがあり、1秒あたり30000リクエストを継続的に超える場合は、上記の16進数のハッシュプレフィックスを追加するメソッドを参照し、列挙値の後に続けてハッシュプレフィックスを追加し、複数のインデックスのパーティションを実行することで、より高い読み取り書き込みパフォーマンスを実現することができます。
logs/faf1-20170701/log120000.tar.gz logs/e073-20170701/log120500.tar.gz logs/333c-20170701/log121000.tar.gz ... images/0165-image001/indexpage1.jpg images/a349-image002/indexpage2.jpg images/ac00-image003/indexpage3.jpg ...
業務上、インクリメントするIDまたは日付を使用せざるを得ない場合、または連続したプレフィックスのオブジェクトを一度に大量にアップロードする必要がある場合があります。代表的な使用法は次のようなものです。
20170701/log0701A.tar.gz
20170701/log0701B.tar.gz
20170702/log0702A.tar.gz
20170702/log0702B.tar.gz
...
id16777216/album/hongkong/img20170701121314.jpg
id16777216/music/artist/tony/anythinggoes.mp3
id16777217/video/record20170701121314.mov
id16777218/live/show/date/20170701121314.mp4
...
上記のようなキー値の命名方法では、2017とIDをプレフィックスとするキー値が存在するインデックスパーティションが容易に上限に達します。この場合、キー値のプレフィックスの一部を反転し、一定のランダム性を実現することができます。
10707102/log0701A.tar.gz
10707102/log0701B.tar.gz
20707102/log0702A.tar.gz
20707102/log0702B.tar.gz
...
61277761di/album/hongkong/img20170701121314.jpg
61277761di/music/artist/tony/anythinggoes.mp3
71277761di/video/record20170701121314.mov
81277761di/live/show/date/20170701121314.mp4
...
主な業務上の負荷がGETリクエスト(すなわちダウンロードリクエスト)である場合は、上記の原則に従うことに加えて、Tencent Cloud CDNサービスの併用もお勧めします。
Tencent Cloud CDNは全国および全世界に分布するエッジアクセラレーションノードを利用して、ユーザーへのコンテンツ配信時に遅延を低減して速度を上昇させるものです。ホットファイルに対するプリフェッチ方式によるキャッシュをサポートすることで、 COSへのback-to-origin GETリクエスト数を減少させます。詳細については、ドメイン名管理のドキュメントをご参照ください。
この記事はお役に立ちましたか?