このページでは、Cloud Storage バケットに SSD ベースのゾーン読み取りキャッシュを提供する Anywhere Cache について説明します。Anywhere Cache は、ニーズに合わせてキャッシュと使用可能な帯域幅のサイズを自動的に調整することで、オンデマンド キャッシュ容量を提供します。このようなメリットがあるため、Anywhere Cache は、読み取り負荷の高いワークロードに関連するネットワーク コストを削減するのに特に役立ちます。
Anywhere Cache でキャッシュを作成して管理する方法については、キャッシュを作成して管理するをご覧ください。
概要
Anywhere Cache を使用すると、ワークロードと同じゾーンにキャッシュを作成できます。ゾーンにキャッシュを作成すると、ゾーンから発信されたデータ読み取りリクエストは、バケットではなくキャッシュによって処理されます。各キャッシュは、キャッシュと同じゾーン内のクライアントにサービスを提供します。データは、キャッシュと同じゾーンにある VM によって読み取られた場合にのみ、バケットからキャッシュに取り込まれます。メタデータはキャッシュに保存されず、オブジェクト メタデータのリクエストはキャッシュではなくバケットで処理されます。
バケットのキャッシュを作成する場合は、バケットのロケーション内のゾーンにキャッシュを作成する必要があります。たとえば、バケットが us-east1
リージョンにある場合、us-east1-b
にキャッシュを作成できますが、us-centra1-c
には作成できません。バケットが ASIA
デュアルリージョンにある場合は、asia-east1
リージョンと asia-southeast1
リージョンを構成する任意のゾーンにキャッシュを作成できます。ゾーンのリストについては、Compute Engine ドキュメントのリージョンとゾーンをご覧ください。
各バケットで、ゾーンごとに 1 つのキャッシュを作成できます。たとえば、バケットが US
マルチリージョンにあり、Compute Engine VM が us-east1-b
ゾーンと us-central1-a
ゾーンで実行されている場合は、us-east1-b
にキャッシュを作成し、us-central1-a
に別のキャッシュを作成できます。
Anywhere Cache はフルマネージド サービスであり、常に一貫したデータを返します。
利点
Anywhere Cache は、主に次の 2 つの方法で役立ちます。
データへのアクセスを高速化: Anywhere Cache は、コンピューティング リソースの近くにある高性能ストレージ デバイスにデータを配置します。短いネットワーク パスと高性能デバイスにより、ワークロードはより多くのスループットを獲得し、読み取りをより迅速に完了し、読み取りの Time to First Byte レイテンシを短縮できます。
マルチリージョン データ転送料金を回避する: マルチリージョン バケットを使用して Cloud Storage データをクエリする場合は、Anywhere Cache を使用して、Compute Engine などの他のプロダクトのデータ転送料金を回避できます。
Anywhere Cache を使用するタイミング
Anywhere Cache は、ML モデルのトレーニングや分析ワークロードの実行に使用されるデータなど、変更頻度が低く読み取り頻度が高いデータをキャッシュに保存する場合に最適です。
複数の Google Kubernetes Engine ノードで AI モデルをトレーニングしているとします。これらのノードはすべて、Cloud Storage バケットに保存されているデータを繰り返し読み取り、同じゾーンで実行しています。ワークロードが実行されているゾーンにキャッシュを作成すると、キャッシュによって追加の帯域幅が提供され、マルチリージョン バケットでのデータの読み取りに関連するデータ転送料金を回避できるため、大規模なスケールアウトされたワークロードをより効率的に実行できます。
サポートされているロケーション
容量が利用可能な限り、特定のゾーンにキャッシュを作成できます。キャッシュの作成に必要な容量が使用できない場合、Anywhere Cache サービスは、容量が使用可能になるか、作成プロセスがユーザーによって中止されるまで、キャッシュの作成を試行し続けます。容量が長期間使用できない場合があります。
各バケットで、ゾーンごとに最大 1 つのキャッシュを作成できます。たとえば、バケットが us-east1
リージョンにある場合は、us-east1-b
にキャッシュを作成して、us-east1-c
に別のキャッシュを作成できます。バケットが us-central1
と us-east1
を含むマルチリージョンにある場合は、us-central1-a
にキャッシュを作成し、us-east1-b
に別のキャッシュを作成できます。
Anywhere Cache は、次のゾーンで使用できます。これらのゾーンは、バケットのロケーション タイプに応じて使用できます。
地理的エリア | ロケーション | ||||
---|---|---|---|---|---|
ゾーン名 | 地域 | デュアルリージョン | マルチリージョン | カスタム デュアルリージョン | |
アジア | |||||
asia-east1-a |
|||||
asia-east1-b |
|||||
asia-east1-c |
|||||
asia-northeast1-a |
|||||
asia-northeast1-b |
|||||
asia-northeast1-c |
|||||
asia-southeast1-a |
|||||
asia-southeast1-b |
|||||
asia-southeast1-c |
|||||
ヨーロッパ | |||||
europe-north1-a |
|||||
europe-north1-b |
|||||
europe-north1-c |
|||||
europe-west1-b |
|||||
europe-west1-c |
|||||
europe-west1-d |
|||||
europe-west4-a |
|||||
europe-west4-b |
|||||
europe-west4-c |
|||||
europe-west6-a |
|||||
europe-west6-b |
|||||
米国 | |||||
us-central1-a |
|||||
us-central1-b |
|||||
us-central1-c |
|||||
us-central1-f |
|||||
us-east1-a |
|||||
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-west1-a |
|||||
us-west1-b |
|||||
us-west1-c |
|||||
us-west4-a |
|||||
us-west4-b |
|||||
us-west4-c |
Anywhere Cache Recommender
Anywhere Cache Recommender は、データ使用量とストレージを分析して、バケットゾーン ペアでキャッシュを作成するための推奨事項と分析情報を提供します。Anywhere Cache Recommender の概要と使用方法については、Anywhere Cache Recommender をご覧ください。
キャッシュ オペレーション
このセクションでは、Anywhere Cache キャッシュで実行できるオペレーションについて説明します。一部のオペレーションは非同期的で、長時間実行オペレーションを返します。他のオペレーションは同期的で、オペレーションはすぐに完了し、AnywhereCache リソースを返します。
キャッシュを作成する
キャッシュを作成するときに、次のプロパティを構成できます。
有効期間(TTL)は、データ チャンクが最後の読み取りからキャッシュに残る最長時間です。たとえば、TTL が 24 時間に設定されている場合、月曜日の午前 11 時に最後に読み取られたデータのチャンクは、その後読み取られなかった場合、火曜日の午前 11 時にキャッシュから削除されます。
TTL は 1 時間~ 7 日の範囲で設定できます。指定しない場合、TTL はデフォルトで 24 時間になります。
アドミッション ポリシーは、キャッシュがデータを 1 回目のミスで取り込むか、2 回目のミスで取り込むかを決定します。2 回目のミスで取り込むと、指定した TTL 内でデータが 2 回目に読み取られた場合にのみ、キャッシュにデータを取り込むことができます。2 回目のミスで取り込むと、複数回読み取られるオブジェクトのみをキャッシュに保存することになるため、Anywhere Cache の使用コストを削減できますが、キャッシュ ヒット率も低下します。
指定しない場合、アドミッション ポリシーはデフォルトで最初のミス時に取り込みになります。
キャッシュを作成すると、キャッシュは作成中に [作成] 状態になり、アクティブに実行されると [実行] 状態になります。キャッシュ作成オペレーションには最大で 48 時間かかることがあります。この時間を超えると、オペレーションはタイムアウトします。
AnywhereCaches Create API は非同期的です。作成オペレーションを行うと、長時間実行オペレーションが返されます。長時間実行オペレーションにより、作成オペレーションのステータスが提供され、オペレーションが完了する前にオペレーションをキャンセルできます。
キャッシュを更新する
キャッシュの TTL またはアドミッション ポリシーは [実行] 状態のときに更新できます。キャッシュの更新中、pending_update
フィールドは true
と評価されます。pending_update
フィールドが true
と評価されている間は、キャッシュを再度更新できません。
ステータスが [作成]、[一時停止]、[無効] のキャッシュは更新できません。AnywhereCaches Update API は非同期的で、長時間実行オペレーションを返します。
キャッシュの TTL の更新が完了すると、新しい TTL は新しく取り込まれたデータにすぐに適用され、既存のデータにはそのデータが読み取られた場合にのみ適用されます。つまり、キャッシュ内の既存のデータは、そのデータが読み取られるか、TTL の期限切れにより強制排除されるまで、古い TTL を保持します。
キャッシュを取得する
キャッシュを取得すると、Anywhere Cache はキャッシュ インスタンスの状態と構成を返します。AnywhereCaches Get API は同期的で、AnywhereCache リソースを返します。
キャッシュのリストを表示する
特定のバケットに関連付けられたキャッシュのリストを返すことができます。キャッシュのリストをページ分けされた形式で返すことができます。
AnywhereCaches List API は同期的で、AnywhereCache リソースのリストを返します。
キャッシュを一時停止する
キャッシュを一時停止すると、[実行] 状態のキャッシュのデータ取り込みを停止できます。キャッシュが [一時停止] 状態の場合、キャッシュから既存のデータを読み取ることはできますが、新しいデータをキャッシュに取り込むことはできません。キャッシュから既存のデータを読み取ると、キャッシュ内のデータの TTL がリセットされます。
[一時停止] 状態のキャッシュを再開すると、キャッシュは [実行] 状態になります。
AnywhereCaches Pause API は同期的で、AnywhereCache リソースを返します。
キャッシュを再開する
無効なキャッシュが 1 時間の猶予期間内にある限り、[一時停止] 状態または、[無効] 状態のキャッシュを再開できます。1 時間の猶予期間が過ぎると、キャッシュはいつでも削除される可能性があるため、再開オペレーションはベスト エフォート方式で実行されます。キャッシュが再開されると、[実行] 状態になります。
AnywhereCaches Resume API は同期的で、AnywhereCache リソースを返します。
キャッシュを無効にする
キャッシュを無効にすると、バケットの構成からキャッシュを完全に削除できます。キャッシュを無効にすると、キャッシュは [無効] 状態になります。この状態の間、キャッシュから既存のデータを読み取ることはできますが、新しいデータをキャッシュに取り込むことはできません。
キャッシュを無効にすると、1 時間の猶予期間が設けられます。この期間中にキャッシュを再開すると、無効化をキャンセルできます。この 1 時間の猶予期間が過ぎると、キャッシュは削除されます。キャッシュが削除されると、キャッシュ内のすべてのデータが強制排除され、キャッシュはバケットから削除されます。
キャッシュが削除されるまでの 1 時間の間に、キャッシュを再開して [無効] 状態を元に戻すことができます。この時点で、キャッシュは [実行] 状態になります。
AnywhereCaches Disable API は同期的で、AnywhereCache リソースを返します。
キャッシュ サイズと帯域幅の上限の自動スケーリング
Anywhere Cache は、ニーズに応じてスケールアップまたはスケールダウンする一時キャッシュ ストレージと帯域幅を提供します。Anywhere Cache のサイズと帯域幅の上限の詳細については、Cloud Storage の割り当てと上限をご覧ください。
費用管理
キャッシュの実行コストを最小限に抑えるために利用できるヒントをいくつか紹介します。
バケットの選択: キャッシュに保存するデータを含むバケットにのみキャッシュを作成する必要があります。
ゾーンの選択: ワークロードがキャッシュ化のメリットを得られるゾーンにのみキャッシュを作成する必要があります。
2 回目の読み取りで取り込む: データを 1 回目の読み取りではなく 2 回目の読み取りでのみ取り込むように指定できます。これにより、キャッシュに保存されるのは、複数回読み取られたデータのみになります。
TTL の設定: キャッシュにデータを保存するために必要な最小 TTL を指定する必要があります。TTL は中断なく変更できます。
キャッシュの一時停止: キャッシュを一時停止すると、データの取り込みとそれに関連するキャッシュ取り込み料金が停止します。キャッシュを一時停止すると、すぐに効果が現れます。指定された TTL が終了した後にすべてのデータが強制排除されるまで、キャッシュを一時停止できます。すべてのデータが強制排除されると、データ ストレージ料金は請求されなくなります。
キャッシュを無効にする: キャッシュを無効にすると、サービスからキャッシュが完全に削除され、関連するすべてのキャッシュ料金が発生しなくなります。
制限事項
バケットに関連付けられているすべてのキャッシュが削除されるまで、バケットを削除することはできません。
Anywhere Cache は耐久性のあるストレージではなく、さまざまなシナリオでデータがキャッシュから削除される可能性があります。たとえば、ワークロードに十分なリソースを確保するために、キャッシュのサイズが自動的に変更される場合があります。このシナリオでは、Anywhere Cache サービスがキャッシュサイズの増加を完了するまで、一部のデータが LRU(最も長い間使われていないものを特定する)アルゴリズムに基づいて強制排除される可能性があります。
いずれの場合も、データはソースバケットに安全に保存されます。TTL の期限切れ以外の理由でデータがキャッシュから削除されると、Anywhere Cache サービスは、費用をかけず透過的にデータをキャッシュに再取り込みしようとします。データを透過的に再取り込みできない場合や、TTL の期限切れにより破棄された場合、Anywhere Cache サービスは最初の読み取りまたは 2 回目の読み取りでデータを再取り込みします。
一時的なリソース不足
次のセクションでは、一時的なリソース不足が発生した場合、つまり、指定されたゾーンにキャッシュの作成やキャッシュサイズの増加に十分な SSD 容量またはサービング容量がない場合の Anywhere Cache の動作について説明します。
新しいキャッシュを作成できない
SSD 容量またはスループット サービング リソースが不足しているため、特定のゾーンに新しいキャッシュを作成できない場合、リソースが一時的に不足することがあります。この期間中、Anywhere Cache は最大 48 時間、新しいキャッシュの作成を試みます。48 時間以内にリソースが使用可能になると、Anywhere Cache はキャッシュ作成リクエストを正常に完了します。48 時間以内にリソースが使用可能にならない場合、キャッシュ作成リクエストは失敗します。キャッシュの停止を回避するには、キャッシュ作成リクエストを手動でキャンセルし、容量が利用可能な別のゾーンまたはリージョンに新しいキャッシュを作成します。
一時的なリソース不足中にキャッシュの作成をモニタリングするには、Anywhere Cache のドキュメントの長時間実行オペレーションの使用をご覧ください。
キャッシュ サイズを増やせない
Anywhere Cache は、次の 2 つのシナリオでリソースが一時的に不足しているため、キャッシュサイズの増加を完了できない場合があります。
指定したゾーンでキャッシュサイズを増やすのに十分な SSD 容量がない。詳細については、SSD 容量が不足しているをご覧ください。
キャッシュ帯域幅の上限をスケーリングするために必要な、ゾーン内のスループット サービング リソースが一時的に不足している場合。詳細については、サービング容量が不足しているをご覧ください。
SSD 容量が不足している
Anywhere Cache では、キャッシュサイズの自動増加をオンデマンドで提供していますが、キャッシュサイズの増加は SSD 容量の可用性に依存します。キャッシュサイズの自動増加リクエストが行われたときに SSD 容量を使用できない場合、Anywhere Cache は、一時的なリソース不足が終了するか、キャッシュサイズの増加が不要になるまでリクエストを送信し続けます。
一時的なリソース不足が発生した場合、新しいデータが取り込まれ、キャッシュ内の既存のデータが使用日が古い順番に基づいて強制排除され、キャッシュ内に新しいデータ用の十分なスペースを確保します。ホットデータのほとんどを保存するのに十分な大きさのキャッシュでは、キャッシュ指標への影響はほとんどありません。ホットデータの量よりも容量が小さいキャッシュでは、リソース不足の影響を受けないキャッシュよりも、データが強制排除され、同じデータが再取り込みされる頻度が高くなります。キャッシュの実際のサイズが必要な容量よりもはるかに小さい場合、リソース不足に関連する次の動作が発生することがあります。
キャッシュ帯域幅の上限の低下、キャッシュ スループットの低下、データ転送帯域幅割り当ての消費量の増加、他の指標への影響の可能性。
課金に次のような影響が生じる可能性があります。
キャッシュ取り込み料金の引き上げ
キャッシュ ストレージ料金の引き下げ
キャッシュ データ転送料金の引き下げ
キャッシュ データ転送オペレーションの料金の引き下げ
マルチリージョン データ転送料金の引き上げ
クラス B オペレーションの料金の引き上げ
一時的なリソース不足の際に最良の結果を得るには、キャッシュをモニタリングし、ニーズに応じてキャッシュまたはワークロードを一時停止することをおすすめします。
サービング容量が不足している
特定のゾーンでスループット サービング リソースが、既存のキャッシュのキャッシュ帯域幅の上限を TiB あたり 20 Gbps にスケーリングするのに不十分な場合、キャッシュサイズの増加中に、キャッシュ帯域幅の上限(CBL)が一時的に不足することがあります。CBL 不足の場合、Anywhere Cache ではキャッシュ CBL が 1 TiB あたり 20 Gbps でスケーリングすることはありませんが、キャッシュは読み取りリクエストを引き続き処理します。CBL の増加リクエストは、リクエストごとに評価されます。CBL 不足が発生すると、外向き帯域幅の使用量が増加する可能性があります。
一時的なリソース不足の際に最良の結果を得るには、キャッシュをモニタリングし、ニーズに応じてキャッシュまたはワークロードを一時停止することをおすすめします。