このページでは、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 の使用料金については、Anywhere Cache の料金をご覧ください。
利点
Anywhere Cache を使用してデータをキャッシュに保存すると、次の利点があります。
データへのアクセスを高速化: Anywhere Cache は、コンピューティング リソースと同じゾーンにデータを配置し、SSD によって完全にバックアップされます。これにより、ワークロードで最大 2.5 TB/秒のスループットを実現し、レイテンシを短縮して読み取りを高速化できます。
マルチリージョン データ転送料金を削減する: マルチリージョン バケットから直接読み取られるデータとは異なり、キャッシュから読み取られるデータにはデータ転送料金は発生しません。初期キャッシュ取り込み時のデータ読み取りには、通常のネットワーク料金が引き続き適用されます。
取得料金を削減する: Nearline Storage、Coldline Storage、Archive Storage のバケットの取得料金は、キャッシュからのデータ読み取りには適用されません。
読み取りオペレーションの費用を削減する: Anywhere Cache から提供される読み取りオペレーションの料金は、Standard Storage のバケットから提供されるクラス B オペレーションよりも低くなります。
キャッシュ サイズを自動スケーリングする: Anywhere Cache の動的 SSD キャッシュは、キャッシュ サイズを指定しなくても、使用状況に基づいて自動的にスケーリングされます。
キャッシュを効率的に使用する: 既存のアプリケーションや API を変更することなく、既存のバケットで Anywhere Cache を有効にできます。Anywhere Cache に保存されたデータには強整合性があります。
料金の詳細については、Anywhere Cache の料金をご覧ください。割り当てについては、Anywhere Cache の割り当てをご覧ください。
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-south1-a |
|||||
us-south1-b |
|||||
us-south1-c |
|||||
us-west1-a |
|||||
us-west1-b |
|||||
us-west1-c |
|||||
us-west3-a |
|||||
us-west3-b |
|||||
us-west3-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 は同期的で、ページ分割をサポートしています。
キャッシュを一時停止する
キャッシュを一時停止すると、[実行] 状態のキャッシュのデータ取り込みを停止できます。キャッシュが [一時停止] 状態の場合、キャッシュから既存のデータを読み取ることはできますが、新しいデータをキャッシュに取り込むことはできません。キャッシュから既存のデータを読み取ると、キャッシュ内のデータの 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 が終了した後にすべてのデータが強制排除されるまで、キャッシュを一時停止できます。すべてのデータが強制排除されると、データ ストレージ料金は請求されなくなります。
キャッシュを無効にする: キャッシュを無効にすると、サービスからキャッシュが完全に削除され、関連するすべてのキャッシュ料金が発生しなくなります。
制限事項
バケットに関連付けられているすべてのキャッシュが削除されるまで、バケットを削除することはできません。
キャッシュの作成、無効化、一時停止、再開、更新のオペレーションを実行する場合は、オペレーションのレートを 1 秒あたり 1 回以下に制限します。1 秒あたり複数のオペレーションを実行すると、失敗する可能性があります。
Anywhere Cache は耐久性のあるストレージではなく、さまざまなシナリオでデータがキャッシュから削除される可能性があります。たとえば、ワークロードに十分なリソースを確保するために、キャッシュのサイズが自動的に変更される場合があります。このシナリオでは、Anywhere Cache サービスがキャッシュサイズの増加を完了するまで、一部のデータが LRU(最も長い間使われていないものを特定する)アルゴリズムに基づいて強制排除される可能性があります。
いずれの場合も、データはソースバケットに安全に保存されます。TTL の期限切れ以外の理由でデータがキャッシュから削除されると、Anywhere Cache サービスは、費用をかけず透過的にデータをキャッシュに再取り込みしようとします。データを透過的に再取り込みできない場合や、TTL の期限切れにより破棄された場合、Anywhere Cache サービスは最初の読み取りまたは 2 回目の読み取りでデータを再取り込みします。
Anywhere Cache を使用して、BigQuery によって発行されたオブジェクト読み取りリクエストのデータを配信することはできません。BigQuery を使用して Cloud Storage バケット内のデータを外部テーブルとしてクエリする場合、バケットでキャッシュが有効になっていても、データはバケットから提供され、キャッシュに取り込まれません。
Anywhere Cache Recommender によって生成された推奨事項と分析情報は、BigQuery を使用して読み取ることはできません。
一時的なリソース不足のトラブルシューティング
次のセクションでは、一時的なリソース不足が発生した場合のトラブルシューティング方法について説明します。一時的なリソース不足とは、指定されたゾーンにキャッシュの作成、キャッシュ サイズの増加、キャッシュ帯域幅の上限の引き上げに十分な SSD 容量または処理能力がない状態を指します。
新しいキャッシュを作成できない
SSD 容量またはスループット サービング リソースが不足しているため、Anywhere Cache で特定のゾーンに新しいキャッシュを作成できない場合、リソースが一時的に不足することがあります。この期間中、Anywhere Cache は最大 48 時間、新しいキャッシュの作成を試みます。48 時間以内にリソースが使用可能になると、Anywhere Cache はキャッシュ作成リクエストを正常に完了します。48 時間以内にリソースが使用可能にならない場合、キャッシュ作成リクエストは失敗します。
トラブルシューティング方法: キャッシュの停止を回避するには、キャッシュ作成オペレーションを手動でキャンセルし、容量が利用可能な別のゾーンに新しいキャッシュを作成します。キャッシュ作成オペレーションをモニタリングまたはキャンセルするには、長時間実行オペレーションの使用をご覧ください。
キャッシュ サイズを増やせない
必要な SSD 容量がキャッシュのゾーンで使用できない場合、Anywhere Cache はキャッシュのサイズを増やせないことがあります。
Anywhere Cache では、キャッシュ サイズの自動増加をオンデマンドで提供していますが、キャッシュサイズの増加は SSD 容量の可用性に依存します。キャッシュ サイズの自動増加リクエストが行われたときに SSD 容量を使用できない場合、Anywhere Cache は、一時的なリソース不足が終了するか、キャッシュ サイズの増加が不要になるまでリクエストを送信し続けます。
一時的なリソース不足が発生した場合、新しいデータが取り込まれ、キャッシュ内の既存のデータが使用日が古い順番に基づいて強制排除されます。ホットデータのほとんどを保存するのに十分な大きさのキャッシュでは、キャッシュ指標への影響はほとんどありません。ホットデータの量よりも容量が小さいキャッシュでは、リソース不足の影響を受けないキャッシュよりも、データが強制排除され、同じデータが再取り込みされる頻度が高くなります。キャッシュの実際のサイズが必要な容量よりもはるかに小さい場合、リソース不足に関連する次の動作が発生することがあります。
- キャッシュ帯域幅の上限の低下、キャッシュ スループットの低下、データ転送帯域幅割り当ての消費量の増加、他の指標への影響の可能性
- 課金に次のような影響が生じる可能性があります。
- キャッシュ取り込み料金による費用増加
- キャッシュ ストレージ料金による費用削減
- キャッシュ データ転送(送信)料金による費用削減
- キャッシュ データ転送(送信)オペレーション料金による費用削減
- マルチリージョン データ転送料金による費用増加
- クラス B オペレーションの使用による費用増加
これらの料金については、Anywhere Cache の料金をご覧ください。
トラブルシューティング方法: 一時的なリソース不足の際に最良の結果を得るには、キャッシュをモニタリングし、ニーズに応じて不要なキャッシュまたはワークロードを一時停止することをおすすめします。
キャッシュの帯域幅上限をスケールアップできない
特定のゾーンでスループット サービング リソースが、既存のキャッシュのキャッシュ帯域幅の上限を TiB あたり 20 Gbps にスケーリングするのに不十分な場合、キャッシュ サイズの増加中に、キャッシュ帯域幅の上限が一時的に不足することがあります。使用可能なキャッシュ帯域幅が不足している場合、Anywhere Cache ではキャッシュ帯域幅の上限が 1 TiB のデータあたり 20 Gbps にスケーリングすることはありませんが、キャッシュは読み取りリクエストを引き続き処理します。キャッシュ帯域幅の上限の引き上げリクエストは、リクエストごとに評価されます。使用可能なキャッシュ帯域幅が不足している場合、バケットのデータ下り(外向き)帯域幅の使用量が増加する可能性があります。
トラブルシューティング方法: 一時的なリソース不足の際に最良の結果を得るには、キャッシュをモニタリングし、ニーズに応じて不要なキャッシュまたはワークロードを一時停止することをおすすめします。