すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSSアクセラレータの使用

最終更新日:Oct 08, 2024

AI、データウェアハウジング、ビッグデータ分析などのビジネスの発展に伴い、Object Storage Service (OSS) で実行されるビジネスの数が増加し、低いデータアクセス遅延と高いスループットが必要になります。 OSSにはOSSアクセラレータ機能があり、高性能NVMe SSDにホットオブジェクトをキャッシュするアクセラレータを作成して、ミリ秒以内の低レイテンシと高スループットでデータアクセスを提供できます。

メトリックの説明

メトリック

説明

ピーク読み取り帯域幅

数式: MAX[600,600 × キャッシュ容量 (TB)] MB/s

  • MAX[] は、括弧内の大きな値が使用されることを示します。 基本帯域幅は600メガバイト/秒です。これは、キャッシュ容量に関係なく、少なくとも600メガバイト/秒の帯域幅が提供されることを示します。

  • 600 xキャッシュ容量 (TB) は、キャッシュ容量とともに線形に増加する帯域幅です。

たとえば、アクセラレータが2,048 GB (2テラバイト) のキャッシュ容量を提供する場合、読み取り帯域幅は (600 + 600)= 1200メガバイト/秒です。

最大読み取り帯域幅

中国 (青島) の Enterprise Edition トランジットルーターへ 40 GB の GB/s

ビジネスでより大きな読み取り帯域幅が必要な場合は、 チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。

単一のリクエストで128 KBを読み取るための最小レイテンシ

<10 ms

キャッシュ容量

  • パブリックプレビュー後: 50 GB〜100テラバイト

  • パブリックプレビュー中: 50 GB〜500 GB

ビジネスでより大きなキャッシュ容量が必要な場合は、 チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。

スケールアップまたはスケールダウン間隔

1時間に1回

スケールアップまたはスケールダウン方法

OSSコンソールで手動でスケールアップまたはスケールダウンする

キャッシュ削除ポリシー

キャッシュは、LRU (Least Recently Used) アルゴリズムに基づいて削除されます。 LRUキャッシュアルゴリズムは、頻繁にアクセスされるデータを保持し、長期間アクセスされないデータを優先的に削除するために使用される。 この場合、キャッシュ容量が効率的に使用される。

前提条件

バケットは、OSSアクセラレータ機能がパブリックプレビューされている次のリージョンのいずれかにあります。中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (ウランカブ) 、中国 (深セン) 、シンガポールです。

使用上の注意

  • アクセラレータのアクセラレーションエンドポイントを使用して、内部ネットワーク経由でのみアクセラレータのリソースにアクセスできます。 インターネット経由でアクセスされるOSSデータをキャッシュする場合は、Alibaba Cloud CDNの使用を推奨します。

  • OSSアクセラレータにキャッシュされたデータは、バケット内のオブジェクトの単一のコピーです。 キャッシュハードウェアに障害が発生した場合、OSSからデータを再度プリフェッチする必要があります。 プリフェッチが完了する前にアクセス速度が低下する。

課金ルール

  • OSSアクセラレータ機能はパブリックプレビュー中です。 パブリックプレビューでは、最大100 GBのキャッシュ容量が無料で提供されます。 パブリックプレビューが終了すると、OSSアクセラレータの実際のキャッシュ容量に対して従量課金で課金されます。

  • アクセラレータのアクセラレーションエンドポイントを使用してOSSデータを読み書きすると、オリジンフェッチリクエストが送信されなくても、OSS API操作呼び出し料金が請求されます。

シナリオ

OSSアクセラレータ機能は、高帯域幅が必要で、データが繰り返し読み取られるシナリオに適しています。

モデル推論

  • 背景情報

    推論サーバーは、AI生成コンテンツ (AIGC) モデル推論のためにモデルオブジェクトをプルしてロードする必要があります。 推論およびデバッグ中、推論サーバーは新しいモデルオブジェクトを常に切り替える必要もあります。 モデルオブジェクトのサイズが大きくなると、推論サーバがモデルオブジェクトをプルしてロードできるようにするために、より長い時間が必要になる。

  • 解決策

    非同期ウォームアップポリシーまたは読み取りポリシー中のウォームアップを使用します。 OSSの非同期ウォームアップポリシーは、ホットモデルオブジェクトのリストを決定できるシナリオに適しています。 読み取りポリシー中のウォームアップは、ホットモデルオブジェクトのリストを特定できないシナリオに適しています。 ホットモデルオブジェクトのリストを確認できる場合は、特定のキャッシュ容量のアクセラレータを設定し、アクセラレータSDKを使用してオブジェクトを事前にアクセラレータに保存できます。 以前の経験に基づいて、特定のキャッシュ容量のアクセラレータを設定することもできます。 アクセラレータは、後続の読み取りで迅速にアクセスできるようにデータを読み取るときに、アクセラレータの高性能メディアにモデルオブジェクトを自動的にキャッシュします。 アクセラレータのキャッシュ容量は、アクセラレーション要件に基づいていつでもスケーリングできます。 推論サーバーがローカルディレクトリからOSSにアクセスする必要がある場合は、ossfsをデプロイする必要があります。

    image

低レイテンシのデータ共有

  • 背景情報

    顧客が自動販売機から商品を購入すると、顧客はモバイルアプリを使用してコンテナ内の商品をスキャンし、写真を撮り、写真をアップロードします。 アプリケーションバックエンドが画像を受信すると、OSSアクセラレータは画像を保存します。 次いで、バックグラウンドサブシステムは、画像に対してコンテンツモデレーション分析およびバーコード認識を実行し、バーコード認識の結果は、料金控除および他の操作のためにアプリケーションバックエンドに返される。 画像はミリ秒以内にダウンロードする必要があります。

  • 解決策

    アクセラレータの同期ウォームアップポリシーを使用します。 OSSアクセラレータは、画像を分析システムにロードする待ち時間を効果的に短縮し、トランザクションリンクを短縮できます。 OSSアクセラレータは、レイテンシに敏感で、データを繰り返し読み取るビジネスに適しています。

    image

ビッグデータ分析

  • 背景情報

    会社のビジネスデータは日ごとに分割され、OSSに長期間保存されます。 アナリストは、HiveやSparkなどのコンピューティングエンジンを使用してデータを分析しますが、クエリ範囲については不明です。 アナリストは、クエリと分析に必要な時間を短縮する必要があります。

  • 解決策

    OSSアクセラレータの読み取りポリシー中にウォームアップを使用します。 このポリシーは、大量のデータが保存され、データクエリ範囲が不確実で、データを正確にウォームアップできないオフラインクエリシナリオに適しています。 たとえば、アナリストAによって照会されたデータは、アクセラレーションクラスターにキャッシュされます。 アナリストBによって照会されたデータがアナリストAによって照会されたデータを含む場合、データ分析は加速される。

    image

マルチレベル加速

  • 背景情報

    クライアント側のキャッシュとサーバー側のアクセラレーションの間に競合はありません。 ビジネス要件に基づいてマルチレベルの高速化を実現したい場合。

  • 解決策

    OSSアクセラレータをクライアント側のキャッシュと一緒に使用します。 Alluxioとコンピューティングクラスターをデプロイすることを推奨します。 読み取るデータがAlluxioキャッシュ内のデータと一致しない場合、データはバックエンドストレージから読み取られます。 OSSアクセラレータは、読み取りポリシー中にウォームアップを使用し、データが最初に読み取られたときにデータをウォームアップします。 クライアントホストのキャッシュ容量の制限により、AlluxioのオブジェクトとディレクトリごとにTime to live (TTL) が設定されます。 TTL期間が終了すると、スペースを節約するためにキャッシュが削除されます。 この場合、OSSアクセラレータのデータはすぐには削除されず、そのキャッシュ容量は数百TBのデータを保存できます。 Alluxioキャッシュ内のデータと一致しないデータが再度読み取られると、データをOSSアクセラレータから直接ロードして、2レベルのアクセラレーションを実装できます。

    image

メリット

  • 低レイテンシ

    OSSアクセラレータのNVMe SSDメディアは、ビジネス用にミリ秒レベルのダウンロード待ち時間を提供できます。これは、大規模なオブジェクトダウンロードシナリオに特に適しています。 OSSアクセラレータは、データウェアハウスのホットデータクエリと推論モデルのダウンロードのパフォーマンスを向上させます。

  • スループットの向上

    アクセラレータの帯域幅は、アクセラレータのキャッシュ容量とともに線形に増加し、最大数百GB/sのバーストスループットを提供します。

  • 自動スケーリング

    ほとんどの場合、コンピューティングタスクは、必要なリソースの量に対して異なる要件を持つ定期的なタスクです。 ビジネスを中断することなく、要件に基づいてOSSアクセラレータのキャッシュ容量をスケールアップまたはスケールダウンできます。 これにより、リソースの無駄とコストを削減できます。 アクセラレータは、少なくとも50 GBのキャッシュ容量と最大100テラバイトのキャッシュ容量をサポートします。 OSSアクセラレータは、OSS大規模データストレージの利点を継承し、データウェアハウス内の複数のテーブルまたはパーティションを直接キャッシュできます。

  • 高スループット

    OSSアクセラレータは、少量のデータに対して高スループットを提供し、少量のホットデータに対するバースト読み取り要件を満たすことができます。

  • 分離されたストレージとコンピューティング

    コンピューティングサーバーのキャッシュ容量と比較して、OSSアクセラレータはコンピューティングサーバーから独立しているため、ビジネスを中断することなく、OSSアクセラレータのキャッシュ容量とパフォーマンスをオンラインで調整できます。

  • データの整合性

    従来のキャッシュソリューションと比較して、OSSアクセラレータ機能はデータの一貫性を保証します。 OSSバケット内のオブジェクトを更新すると、アクセラレータはオブジェクトの最新バージョンを自動的に識別してキャッシュし、コンピューティングエンジンがオブジェクトの最新バージョンを読み取ることができるようにします。

  • 複数のウォームアップポリシー

    OSSアクセラレータは、OSSで更新されるオブジェクトを自動的に識別して、エンジンが最新のデータを読み取ることができるようにします。 OSSアクセラレータは、次のウォームアップポリシーを提供します。

    • 同期ウォームアップ: データがOSSに書き込まれると、データが同期され、アクセラレータにキャッシュされます。

    • 読み取り中のウォームアップ: リクエストしたデータがキャッシュにヒットしない場合、OSSアクセラレータは自動的にデータをOSSアクセラレータにキャッシュします。

    • 非同期ウォームアップ: コマンドを実行して、OSS内のデータをOSSアクセラレータにバッチキャッシュできます。

制御ポリシー機能の動作

アクセラレータが作成されると、そのリージョン専用の内部アクセラレーションエンドポイントが作成されます。 たとえば、中国 (北京) リージョンのアクセラレーションエンドポイントは http://cn-beijing-internal.oss-data-acc.aliyuncs.com です。 アクセラレータと同じ仮想プライベートクラウド (VPC) にいる場合、アクセラレーションエンドポイントを使用して、アクセラレータにキャッシュされているリソースにアクセスできます。 次の図は、アクセラレーションエンドポイントを使用して、アクセラレータにキャッシュされているリソースにアクセスする方法を示しています。

image

以下の項目は、ワークフローについて説明します。

  • 書き込みリクエスト

    同期キャッシュのウォームアップが無効になっている場合、クライアントからアクセラレータのアクセラレーションエンドポイントに送信された書き込み要求はOSSバケットに転送されます。 このプロセスは、OSSバケットのデフォルトドメイン名が使用されるプロセスに似ています。

    同期キャッシュのウォームアップが有効になっている場合、クライアントからアクセラレーションエンドポイントに送信された書き込み要求は、OSSバケットとOSSアクセラレータに転送されます。

  • 読み取りリクエスト

    1. クライアントからアクセラレーションエンドポイントに送信された読み取り要求は、OSSアクセラレータに転送されます。

    2. OSSアクセラレータが読み取り要求を受信すると、OSSアクセラレータはキャッシュ内の要求されたオブジェクトを検索します。

      • 要求されたオブジェクトがアクセラレータにキャッシュされている場合、オブジェクトはクライアントに返されます。

      • 要求されたオブジェクトがアクセラレータにキャッシュされていない場合、アクセラレータはアクセラレータにマップされているOSSバケットからオブジェクトを要求します。 OSSがリクエストを受信すると、リクエストされたオブジェクトがアクセラレータにキャッシュされます。 次に、アクセラレータはオブジェクトをクライアントに返します。

      • OSSアクセラレータのキャッシュ容量が使い果たされた場合、OSSアクセラレータは、比較的高い頻度でアクセスされるキャッシュされたオブジェクトに優先順位を付けます。

性能比較

  • 応答レイテンシ統計のダウンロード

    OSSとOSSアクセラレータを使用して、サイズが10 MBのオブジェクトをテスト用に複数回ダウンロードし、応答レイテンシをミリ秒単位で計算します。 結果は、OSSアクセラレータを使用すると、レイテンシが10倍短縮されることを示しています。

    次の図で、P50は50% のリクエストが現在のレイテンシ統計を満たすことを示し、P999は99.9% のリクエストが現在のレイテンシ統計を満たすことを示します。

    image
  • クラウドのデータレイクとデータウェアハウス

    ユーザーは、ローカルディスク、OSS、およびOSSアクセラレータをストレージメディアとしてテストします。

    • Latency

      シナリオ

      ローカルCacheFS (ローカルディスク)

      OSS

      OSSキャッシュ (アクセラレータ)

      ポイントクエリ

      382 ms

      2451 ms

      1160 ms

      1,000データ項目に対するランダムクエリ

      438 ms

      3786 ms

      1536 ms

      データの10% に関するランダムクエリ

      130564 ms

      345707 ms

      134659 ms

      フルスキャン

      171548 ms

      398681 ms

      197134 ms

    • パフォーマンス

      • オンラインクエリ中、OSSアクセラレータの応答時間はOSSの応答時間の2〜2.5倍になります。 データの10% に対するフルスキャンおよびランダムクエリ中、OSSアクセラレータのパフォーマンスは、OSSのパフォーマンスおよびローカルESSD CacheFSのパフォーマンスの2〜2.5倍に85% ます。

      • オンラインクエリ中、OSSアクセラレータへの1回のリクエストの固定レイテンシは8〜10 msです。 1,000データ項目およびポイントクエリに対するランダムクエリの間、OSSアクセラレータのパフォーマンスは、OSSのパフォーマンスおよびローカルESSD CacheFSのパフォーマンスの30% よりも1.5 3倍高くなります。

    • コンテナと自動運転のシミュレーショントレーニング

      画像、マップ、ログデータを取得するために、多数のコンテナが同時に起動されます。 シミュレーショントレーニングの全体的な期間は60% 短縮されます。

      タイプ

      データ量

      ピーク帯域幅

      有効期間

      OSS

      204 TB

      100 Gbit/s

      2.2時間

      OSSアクセラレータ

      128 TB

      300 Gbit/s

      40分

  • Acceleratorのスループット

    アクセラレータは、設定されたキャッシュ容量に基づいて、アクセラレータにキャッシュされたデータのスループット帯域幅を提供します。 アクセラレータは、アクセラレータの1テラバイトのキャッシュ容量に対して最大2.4 Gbit/sのスループットを提供します。 アクセラレータによって提供されるスループットは、OSSによって提供される標準スループットによって制限されません。 OSSの標準帯域幅制限の詳細については、「制限とパフォーマンスメトリック」をご参照ください。

    たとえば、OSSは中国 (深セン) リージョンで100 Gbit/sの標準帯域幅を提供します。 OSSアクセラレータ機能を有効にし、キャッシュ容量が10テラバイトのOSSアクセラレータを作成した後、アクセラレータのアクセラレーションエンドポイントを使用してアクセラレータにキャッシュされているデータにアクセスすると、アクセラレータが提供する追加の24 Gbit/sの低遅延スループットを取得できます。 バッチオフラインコンピューティングアプリケーションの場合、OSS内部エンドポイントを使用すると、大規模な同時ブロック読み取りに100 Gbit/sの標準スループットを利用できます。 ホットデータクエリサービスの場合、アクセラレータのアクセラレーションエンドポイントを使用して、アクセラレータのNVMe SSDメディアにキャッシュされたデータにアクセスすると、さらに24 Gbit/sの低遅延スループットを得ることができます。

アクセラレータを作成します。

  1. アクセラレータを作成します。

    1. にログインします。OSSコンソール.

    2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

    3. 左側のナビゲーションツリーで、[バケット設定] > [OSSアクセラレータ] を選択します。

    4. [OSSアクセラレータ] ページで、[設定] をクリックします。

    5. [メモ] ダイアログボックスで、[試用期間] を選択し、[次へ] をクリックします。

    6. [アクセラレーターの作成] パネルで、容量 パラメーターを設定し、[次へ] をクリックします。

  2. アクセラレータのポリシーを設定します。

    1. [アクセラレータの作成] パネルで、次のパラメーターを設定します。

      パラメーター

      説明

      アクセラレーションポリシー

      アクセラレータの次のいずれかのポリシーを選択します。

      • パス: パス内のオブジェクトへのアクセスが高速化されます。 最大10個のパスを設定できます。 設定されたパス内のオブジェクトへのアクセスのみが高速化されます。 たとえば、ルートディレクトリのexampleディレクトリにあるオブジェクトへのアクセスを高速化する場合は、パスをexample/ に設定します。

      • バケット全体: バケット内のすべてのオブジェクトへのアクセスが高速化されます。

      [B@5a10616

      同期キャッシュウォームアップを有効にすることを推奨します。 これを有効にすると、クライアントがアクセラレータのアクセラレータエンドポイントを使用してPutObjectまたはAppendObjectを呼び出してOSSにデータを書き込むと、データはOSSバケットとアクセラレータに同時に書き込まれます。 アクセラレータを低レイテンシで使用することで、次回データを読み取ることができます。

    2. [作成] をクリックします。 [請求項目の確認] メッセージボックスで、[OK] をクリックします。

アクセラレータを使用する

次のセクションでは、アクセラレータを使用して、バケット内のすべてのデータまたは特定のパス内のデータへのアクセスを高速化する方法について説明します。

バケット内のすべてのデータへのアクセスを高速化

OSS SDK for Javaを使用してossClientインスタンスを初期化すると、アクセラレータの高速化エンドポイントを使用して、バケット全体のデータ転送を高速化できます。

// OSSアクセラレータのアクセラレーションエンドポイントを指定します。 
文字列acclerator_oss_endpoint = " http://cn-beijing-internal.oss-data-acc.aliyuncs.com ";
// OSSClientインスタンスを作成します。 
OSS ossClient = new OSSClientBuilder().build(normal_oss_endpoint, accessKeyId, accessKeySecret);

OSSObject ob = ossClient.getObject(bucketName,objectname);
OSSObject ob = ossClient.putObject(bucketName、objectname、inputStream); 

特定のパスのデータへのアクセスを高速化

image

次のいずれかのタイプのエンドポイントを使用して、データの読み書き分離を実装できます。

  • oss-cn-beijing.aliyuncs.com: パブリックOSSエンドポイントを使用してOSSにアップロードまたはnormal_data/* からダウンロードされた通常のデータ。

  • oss-cache-cn-beijing-h.aliyuncs.com: アクセラレータのアクセラレーションエンドポイントを使用してhot_data/* からダウンロードされたホットデータ。

次のサンプルコードは、特定のパスのデータへのアクセスを高速化する方法の例を示しています。

public class Demo {
    // AccessKeyIdとAccessKeySecret環境変数が設定されていることを確認します。 
    プライベート静的文字列accesseyId=System.getenv("AccessKeyId");
    プライベート静的文字列accessKeySecret = System.getenv("AccessKeySecret");

    // OSSエンドポイントを使用して、OSSバケットにデータをアップロードします。 
    プライベート静的文字列normal_oss_endpoint = " https://oss-cn-hangzhou.aliyuncs.com ";

    // OSSアクセラレータのアクセラレーションエンドポイントを使用してデータをダウンロードします。 
    プライベート静的文字列acclerator_oss_endpoint = " https://cn-hangzhou-internal.oss-data-acc.aliyuncs.com ";
    // バケットの名前を指定します。 例: examplebucket. 
    プライベート静的文字列bucketName = "examplebucket";
    // ホットデータが格納されるオブジェクトの名前を指定します。 
    プライベート静的文字列object_hot = "hot_data/filetest";
    // 正規データが格納されるオブジェクトの名前を指定します。 
    プライベート静的文字列object_normal = "normal_data/filetest";
    // アップロードするオブジェクトのコンテンツを指定します。 
    プライベート静的文字列content = "helloworld";

    public static void main(String[] args) throws IOException {

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(normal_oss_endpoint, accessKeyId, accessKeySecret);

        // object_hotファイルのデータをOSSにアップロードします。 
        uploadFile(object_hot、ossClient);

        // object_normalファイルのデータをOSSにアップロードします。 
        uploadFile(object_normal、ossClient);

        // OSSアクセラレータからhot_data/filetestオブジェクトをダウンロードします。 
        downloadFile(object_hot、ossClient);

        // OSSからnormal_data/filetestオブジェクトをダウンロードします。 
        downloadFile(object_normal、ossClient);

        // Shut down the OSSClient instance. 
        ossClient.shutdown();

    }

    public static void printObjectContent(OSSObject ob) throws IOException {
        .net // オブジェクトの内容を読み取ります。 
        BufferedReader reader = new BufferedReader(new InputStreamReader(ob.getObjectContent()));
        一方、(TRUE){
            String line = reader.readLine();
            if (line == null) { break; }

            System.out.println("content:" + line);
        }
    }

    /*
    * すべてのファイルをOSSにアップロードします。 
     */
    public static void uploadFile(String objectName, OSS ossClient) {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes());
        InputStream contentInputStream = (InputStream) byteArrayInputStream;

        PutObjectRequest putObjectRequest=新しいPutObjectRequest(bucketName, objectName, contentInputStream);
        // エンドポイントを明示的に指定しない場合は、ossclient初期化時に指定された値が使用されます。 
        PutObjectResult result = ossClient.putObject(putObjectRequest);
        System.out.println("Put objectName:" + objectName + "to" normal_oss_endpoint + "resultID:" + result.getRequestId());
        putObjectRequest.setEndPoint(normal_oss_endpoint);

    }

    /*
     * objectNameのプレフィックスに基づいて、使用するエンドポイントを決定します。 
     */
    public static Object downloadFile(String objectName、OSS ossClient) がIOException {
        String endpoint = "";
        if (objectName.startsWith("normal_data")) {
            endpoint = normal_oss_endpoint;
        } else if (objectName.startsWith("hot_data")) {
            endpoint = acclerator_oss_endpoint;
        }

        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
        // エンドポイントを明示的に指定しない場合は、ossclient初期化時に指定された値が使用されます。 
        getObjectRequest.setEndPoint (エンドポイント);
        OSSObject ob = ossClient.getObject(getObjectRequest);
        System.out.println("Get Object" + objectName + "from" + endpoint + "resultID" + ob.getRequestId());
        printObjectContent(ob);

        obを返します。
    }
}

アクセラレータのキャッシュ容量の変更

アクセラレータのキャッシュ容量をスケールアップまたはスケールダウンするには、次の手順を実行します。

  1. では、基本情報のセクションOSSアクセラレータページをクリックし、Dingtalk_20240315162315.jpg右上隅のアイコン。

  2. では、OSSアクセラレータの編集パネルの値を変更します。容量パラメーターを使用します。

  3. クリックOK.