このページでは、Cloud Storage バケットに SSD ベースのゾーン読み取りキャッシュを提供し、保存データのスループットを向上させ、レイテンシを短縮できる Rapid Cache について説明します。Rapid Cache は、ニーズに合わせて自動的にスケールアップまたはスケールダウンするストレージ容量と帯域幅を提供します。Rapid Cache はフルマネージド サービスであり、一貫したデータを返します。
Rapid Cache は、読み取り負荷の高いワークロードのパフォーマンスを向上させ、ネットワーク費用を削減するのに役立ちます。詳細については、特典をご覧ください。
Rapid Cache を使用してキャッシュを作成して管理する方法については、キャッシュを作成して管理するをご覧ください。
Rapid Cache の仕組み
Rapid Cache を使用すると、ワークロードと同じゾーンにキャッシュを作成できます。ゾーンにキャッシュを作成すると、ゾーンから発信されたデータ読み取りリクエストは、バケットではなくキャッシュによって処理されます。各キャッシュは、キャッシュと同じゾーン内のクライアントにサービスを提供します。
バケットのデータは、キャッシュと同じゾーンにある VM によって読み取られると、キャッシュに取り込まれます。書き込み時の取り込み動作を構成すると、バケットに書き込まれたときにデータがキャッシュに取り込まれます。
メタデータはキャッシュに保存されません。オブジェクト メタデータのリクエストは、常にキャッシュではなくバケットで処理されます。
データがキャッシュに取り込まれる方法の詳細については、データの取り込みをご覧ください。キャッシュの Time to Live(TTL)と書き込み時の取り込み動作は、キャッシュの作成時または更新時に構成できます。
利点
Rapid Cache を使用してデータをキャッシュに保存すると、次の利点があります。
データアクセスを高速化: Rapid Cache は、コンピューティング リソースと同じゾーンにデータを配置し、SSD によって完全にバックアップされます。これにより、ワークロードで最大 2.5 TB/秒のスループットを実現し、レイテンシを短縮して読み取りを高速化できます。
マルチリージョン データ転送料金を削減する: キャッシュから読み取られるデータには、マルチリージョン バケットから直接読み取られるデータと比べ、データ転送料金が削減されます。
取得料金を削減する: Nearline Storage、Coldline Storage、Archive Storage のバケットの取得料金は、キャッシュからのデータ読み取りには適用されません。
読み取りオペレーションの費用を削減する: Rapid Cache から提供される読み取りオペレーションの料金は、Standard Storage のバケットから提供されるクラス B オペレーションよりも低くなります。
キャッシュ サイズを自動スケーリングする: Rapid Cache の動的 SSD キャッシュは、キャッシュ サイズを指定しなくても、使用状況に基づいて自動的にスケーリングされます。
キャッシュを効率的に使用する: 既存のアプリケーションや API を変更することなく、既存のバケットで Rapid Cache を有効にできます。Rapid Cache に保存されたデータには強整合性があります。
料金の詳細については、Rapid Cache の料金をご覧ください。割り当てについては、Rapid Cache の割り当てをご覧ください。
Rapid Cache を使用するタイミング
変更頻度が低く読み取り頻度が高いデータには Rapid Cache を使用して、分析ワークロードと AI/ML モデルのトレーニングと読み込みのデータ読み取りを高速化します。
複数の Google Kubernetes Engine ノードで AI モデルをトレーニングしているとします。これらのノードはすべて、Cloud Storage バケットに保存されているデータを繰り返し読み取り、同じゾーンで実行しています。ワークロードが実行されているゾーンにキャッシュを作成すると、キャッシュによって追加の帯域幅が提供され、マルチリージョン バケットでのデータの読み取りに関連するデータ転送料金を削減できるため、大規模なスケールアウトされたワークロードをより効率的に実行できます。
キャッシュ サイズと帯域幅の上限の自動スケーリング
Rapid Cache は、キャッシュに保存されるデータの量に応じて自動的にスケールアップまたはスケールダウンする一時ストレージ容量と帯域幅を提供します。
キャッシュ帯域幅の上限は 100 Gbps から始まり、保存されているデータ 1 TiB あたり 20 Gbps のレートでスケーリングされます。キャッシュに保存されるデータの量を増やすか、ゾーンにキャッシュをさらに作成するか、テクニカル アカウント マネージャーまたは Google の担当者に連絡することで、開始帯域幅または合計帯域幅の上限を引き上げることができます。
Rapid Cache のサイズと帯域幅の上限の詳細については、Cloud Storage の割り当てと上限をご覧ください。
ゾーンでのデータのキャッシュ保存
バケットのキャッシュを作成する場合は、バケットのロケーション内のゾーンにキャッシュを作成する必要があります。たとえば、バケットが us-east1 リージョンにある場合、us-east1-b にキャッシュを作成できますが、us-central1-c には作成できません。バケットが ASIA デュアルリージョンにある場合は、asia-east1 リージョンと asia-southeast1 リージョンを構成する任意のゾーンにキャッシュを作成できます。
各バケットで、ゾーンごとに最大 1 つのキャッシュを作成できます。たとえば、バケットが us-east1 リージョンにある場合は、us-east1-b にキャッシュを作成して、us-east1-c に別のキャッシュを作成できます。バケットが us-central1 と us-east1 を含むマルチリージョンにある場合は、us-central1-a にキャッシュを作成し、us-east1-b に別のキャッシュを作成できます。
ゾーンの容量が利用可能な限り、ゾーンにキャッシュを作成できます。キャッシュの作成に必要な容量が使用できない場合、Rapid Cache は、容量が使用可能になるか、作成プロセスがユーザーによってキャンセルされるまで、キャッシュの作成を試行し続けます。容量が長期間使用できない場合があります。
Rapid Cache は、次のゾーンで使用できます。これらのゾーンは、バケットのロケーション タイプに応じて使用できます。
アジア
次の表に、アジア地域で Rapid Cache で利用可能なゾーンとロケーション タイプを示します。
| ゾーン名 | 地域 | デュアルリージョン | マルチリージョン | カスタム デュアルリージョン |
|---|---|---|---|---|
asia-east1-a |
||||
asia-east1-b |
||||
asia-east1-c |
||||
asia-northeast1-a |
||||
asia-northeast1-b |
||||
asia-northeast1-c |
||||
asia-south1-a |
||||
asia-south1-b |
||||
asia-south1-c |
||||
asia-southeast1-a |
||||
asia-southeast1-b |
||||
asia-southeast1-c |
ヨーロッパ
次の表に、ヨーロッパ地域で Rapid Cache で使用できるゾーンとロケーション タイプを示します。
| ゾーン名 | 地域 | デュアルリージョン | マルチリージョン | カスタム デュアルリージョン |
|---|---|---|---|---|
europe-north1-a |
||||
europe-north1-b |
||||
europe-north1-c |
||||
europe-west1-b |
||||
europe-west1-c |
||||
europe-west1-d |
||||
europe-west3-a |
||||
europe-west3-b |
||||
europe-west3-c |
||||
europe-west4-a |
||||
europe-west4-b |
||||
europe-west4-c |
||||
europe-west4-ai1a
(AI ゾーン)
|
||||
europe-west6-a |
||||
europe-west6-b |
米国
次の表に、米国地域で Rapid Cache で使用可能なゾーンとロケーション タイプを示します。
| ゾーン名 | 地域 | デュアルリージョン | マルチリージョン | カスタム デュアルリージョン |
|---|---|---|---|---|
us-central1-a |
||||
us-central1-b |
||||
us-central1-c |
||||
us-central1-f |
||||
us-central1-ai1a
(AI ゾーン)
|
||||
us-east1-b |
||||
us-east1-c |
||||
us-east1-d |
||||
us-east4-a |
||||
us-east4-b |
||||
us-east4-c |
||||
us-east5-a |
||||
us-east5-b |
||||
us-east5-c |
||||
us-south1-a |
||||
us-south1-b |
||||
us-south1-c |
||||
us-south1-ai1b
(AI ゾーン)
|
||||
us-west1-a |
||||
us-west1-b |
||||
us-west1-c |
||||
us-west2-a |
||||
us-west3-a |
||||
us-west3-b |
||||
us-west3-c |
||||
us-west4-a |
||||
us-west4-b |
||||
us-west4-c |
キャッシュのデータの取り込み
デフォルトでは、データは最初にリクエストされた後にキャッシュに取り込まれます。
この最初のリクエストが届いたとき、キャッシュは空であるため、キャッシュ内にデータはまだありません。これにより、初期キャッシュミスが発生し、システムは代わりにバッキング Cloud Storage バケットからデータを取得します。システムが取得したデータをユーザーに配信すると同時に、データがキャッシュに取り込まれます。
この最初のリクエストが完了すると、データはキャッシュに保存され、以降の読み取りはすべて高速のキャッシュ ヒットとしてキャッシュから直接提供されます。この動作により、読み取りレイテンシが大幅に短縮され、データ取得が高速化されます。取り込まれたデータは、TTL が期限切れになるまでキャッシュに存在し、その後、キャッシュから強制排除されます。
最初のリクエストの遅延を完全に回避するには、最初の読み取り後にデータを取り込むだけでなく、書き込み時にデータを取り込むようにキャッシュを構成します。
データをチャンクとして取り込む
データをキャッシュに取り込むとき、Rapid Cache はオブジェクトを固定サイズの小さなチャンクに分割します。オブジェクトをチャンクに分割すると、特に特定の部分のみがアクセスされる大きなファイルの場合に、よりきめ細かいキャッシュ保存が可能になります。
チャンクは 2 MB のデータブロックです。オブジェクトのリクエストが行われると、Rapid Cache はリクエストされたバイト範囲をカバーする 2 MB のチャンクを特定し、それらのチャンクを個別に管理します。
データの取り込みの動作は、キャッシュに取り込まれるオブジェクトのサイズによって異なります。
2 MB を超えるオブジェクトに対する読み取りリクエストの場合、リクエストされたバイト範囲を含むチャンクのみが取り込まれます。たとえば、100 MB のファイルの最初の 1 MB を読み取ると、最初の 2 MB のチャンクのみが取り込まれます。
2 MB 未満のオブジェクト(500 KB の画像など)に対する読み取りリクエストの場合、オブジェクト全体がキャッシュに取り込まれます。
書き込み時にデータを取り込む
書き込み時にデータを取り込むようにキャッシュを構成すると、データがバケットに書き込まれた瞬間にキャッシュに取り込まれます。この動作は、最初の読み取り後にデータを取り込むというデフォルトのキャッシュ動作に加えて、必要に応じて有効にできます。書き込み時の取り込みが有効になっている場合、書き込み中のオブジェクトは書き込みのファイナライズ後に取り込まれます。オブジェクト全体が確定する前に、個々のオブジェクト チャンクが取り込まれることがあります。
書き込み時の取り込み機能により、最初のキャッシュミスが解消され、ワークロードは最初のデータ読み取りで即座にキャッシュ ヒットの恩恵を受けることができます。書き込み時のデータの取り込みにより、書き込み後の読み取りワークロード(システム チェックポイントの復元やモデル トレーニング用のデータ パイプラインの準備など)が高速化されます。
キャッシュを作成または更新するときに、書き込み時にデータを取り込むようにキャッシュを構成できます。
有効期間(TTL)
キャッシュの TTL は、データが強制排除されるまでキャッシュに留まる期間を制御します。TTL は、データが最後の読み取りからキャッシュに残る期間です。たとえば、TTL が 24 時間に設定されている場合、月曜日の午前 11 時に最後に読み取られたデータのチャンクは、その後読み取られなかった場合、火曜日の午前 11 時にキャッシュから削除されます。
キャッシュの TTL は、キャッシュの作成時または更新時に構成できます。キャッシュ TTL は 24 時間~ 7 日の範囲で設定できます。指定しない場合、TTL はデフォルトで 24 時間になります。
キャッシュ オペレーション
このセクションでは、Rapid Cache キャッシュで実行できるオペレーションについて説明します。一部のオペレーションは非同期的で、長時間実行オペレーションを返します。他のオペレーションは同期的で、オペレーションはすぐに完了し、AnywhereCache リソースを返します。
キャッシュを作成する
キャッシュのロケーション、TTL、データ取り込み動作は、キャッシュの作成時に設定できます。キャッシュは作成中に [作成] 状態になり、アクティブに実行されると [実行] 状態になります。キャッシュ作成オペレーションには最大で 48 時間かかることがあります。この時間を超えると、オペレーションはタイムアウトします。
AnywhereCaches Create API は非同期的です。作成オペレーションを行うと、長時間実行オペレーションが返されます。長時間実行オペレーションにより、作成オペレーションのステータスが提供され、オペレーションが完了する前にオペレーションをキャンセルできます。
キャッシュを更新する
キャッシュの TTL またはデータの取り込みの動作は、キャッシュの更新時に設定できます。更新できるのは、[実行] 状態のキャッシュのみです。ステータスが [作成] または [無効] のキャッシュは更新できません。
キャッシュの更新中、pending_update フィールドは true と評価されます。pending_update フィールドが true と評価されている間は、キャッシュを再度更新できません。キャッシュの TTL の更新が完了すると、新しい TTL がキャッシュ内の既存のデータと新しいデータの両方にすぐに適用されます。
AnywhereCaches Update API は非同期的で、長時間実行オペレーションを返します。
キャッシュを取得する
キャッシュを取得すると、Rapid Cache はキャッシュ インスタンスの状態と構成を返します。AnywhereCaches Get API は同期的で、AnywhereCache リソースを返します。
キャッシュのリストを表示する
特定のバケットに関連付けられたキャッシュのリストを返すことができます。AnywhereCaches List API は同期的で、ページ分割をサポートしています。
キャッシュを無効にする
キャッシュを無効にすると、バケットの構成からキャッシュを完全に削除できます。キャッシュを無効にすると、キャッシュは [無効] 状態になります。この状態の間、キャッシュから既存のデータを読み取ることはできますが、新しいデータをキャッシュに取り込むことはできません。
キャッシュを無効にすると、1 時間の猶予期間が設けられます。この期間中にキャッシュを再開すると、無効化をキャンセルできます。この 1 時間の猶予期間が過ぎると、キャッシュは削除されます。キャッシュが削除されると、キャッシュ内のすべてのデータが強制排除され、キャッシュはバケットから削除されます。
キャッシュが削除されるまでの 1 時間の間に、キャッシュを再開して [無効] 状態を元に戻すことができます。この時点で、キャッシュは [実行] 状態になります。
AnywhereCaches Disable API は同期的で、AnywhereCache リソースを返します。
キャッシュを再開する
無効なキャッシュが 1 時間の猶予期間内にある限り、[無効] 状態のキャッシュを再開できます。