EdgeOne KVストレージは低遅延のキーバリューデータストレージサービスです。データは少数の中心ノードに永続化され、アクセス時にエッジノードにキャッシュされます。高読み取り量のシナリオ向けに最適化されており、エッジ関数に高速なデータ読み取り能力を提供できます。
説明:
KVストレージは現在クローズドベータ段階にあり、エンタープライズ版プランをご利用のユーザーに公開されています。ご利用を希望される場合は、お問い合わせの上、利用開始をお申し込みください。 動作原理
初めてKVにデータを書き込む際、データは直接中心ノードに書き込まれ、各エッジノードへ自動的に配信されません。クライアントが読み取りを開始すると、EdgeOneは最も近いエッジノードからデータを取得します。そのノードに対応するデータがすでにキャッシュされている場合は、直接返されます。キャッシュミスが発生した場合、例えば初回アクセスやキャッシュの有効期限切れの場合、システムは中心ノードからデータを取得し、それを現在のエッジノードにキャッシュします。初回アクセスの遅延は高くなりますが、その後同じノードからのリクエストは直接キャッシュにヒットし、再度オリジンサーバーへアクセスする必要はありません。
KVキーバリューペアを変更する際、書き込みを開始したエッジノードはそのKeyのローカルキャッシュを直ちにクリアし、そのノードが後続の読み取りで最新データを取得できるようにします。キーバリューペアを削除する際も、対応するKeyのキャッシュを直ちにクリアします。
KVはキャッシュによって高性能な読み取りを実現するため、結果整合性モデルを採用しています。変更を開始したノードでは、変更は通常すぐに反映されます。他のノードでは、キャッシュされた古いデータは有効期限が切れるまで更新されません。デフォルトのキャッシュ時間(TTL)は60秒です。
上記の動作原理に基づき、KVは高頻度読み取り・低頻度書き込み、グローバルアクセス遅延に敏感なビジネスシナリオに適しています。例えば、ウェブサイト設定配信、フィーチャーフラグ、アクセス制御リスト、ユーザー設定保存などです。
コアコンセプト
|
名前空間 | KVストレージの基本管理単位であり、異なるビジネスのキーバリューデータを分離するために使用されます。各名前空間には独立したストレージスペースがあります。 |
KVキー値ペア | 名前空間内のデータストレージ単位であり、KeyとValueで構成されます。Keyは1つのデータを一意に識別するために使用され、Valueは対応するデータ内容です。 |
サービスバインディング | KV名前空間とエッジ関数を関連付ける設定です。サービスバインディングを通じて、関数コードは指定された変数名を使用して実行時に対応するKV名前空間にアクセスできます。 |
変数名 | サービスバインディング時に定義された変数名で、関数コードがKV名前空間にアクセスするためのエントリ識別子です。同一関数内では、変数名の重複は許可されません。 |
適用シーン
シーン1:動的設定の配信
ビジネス設定(グレースケール比率、機能スイッチ、レート制限閾値など)をKVストレージに書き込み、エッジ関数がリクエスト処理時にリアルタイムで読み取ることで、コードを公開することなくビジネス動作を動的に調整できます。
シーン2:ユーザーセッションと状態管理
エッジ側でユーザーセッションTokenまたは状態情報を保存し、複数のエッジノードで読み取ることができます。ログイン状態の検証、ユーザー設定の保存などのシナリオに適しています。
シーン3:許可リスト・拒否リストとルール管理
IP許可リスト・ブロックリスト、ドメインルール、リスク制御特徴などのデータをKVストレージに書き込み、エッジ関数がトラフィック入口で直接読み取り・遮断することで、オリジンサーバーの負荷を低減します。
シーン4:A/Bテストとカナリアリリースによるトラフィック振り分け
実験グループ設定(ユーザーバケットルール、ページバージョンマッピングなど)をKVストレージに書き込み、エッジ関数がリクエスト入口で読み取り、ルールに従ってトラフィックを異なるバージョンにルーティングすることで、再デプロイすることなくリアルタイムで分流比率を調整できます。
シーン5:静的リソースのバージョン管理
静的リソースのバージョン番号またはパスマッピング関係をKVストレージに保存し、エッジ関数が応答時にリソースアドレスを動的に置き換えることで、迅速なロールバックまたはホットアップデートを実現し、キャッシュ問題によってユーザーが古いバージョンのリソースを読み込むことを防ぎます。
シーン6:APIレート制限と頻度制御
ユーザーまたはIPのリクエストカウントおよび時間枠情報をKVストレージに書き込み、エッジ関数が各リクエスト時にカウントを読み取り・更新し、閾値を超えた場合はエッジ側で直接レート制限応答を返すため、リクエストがオリジンサーバーまで到達する必要はありません。
シーン7:地理位置情報に基づくコンテンツカスタマイズ
地域ごとに対応するコンテンツポリシー(言語バージョン、コンプライアンス通知、価格体系など)をKVストレージに書き込み、エッジ関数がリクエストの送信元地域に基づいて対応する設定を読み取り、地域別コンテンツの差別化配信を実現します。
利用制限
|
単一サイトの名前空間数 | 10個 |
単一名前空間のストレージ容量 | 1 GB |
単一Valueの最大値 | 1 MB |
単一Keyの最大長 | 512バイト |
名前空間ごとの1日あたりの読み取り操作回数 | 1,000,000回/日 |
名前空間ごとの1日あたりの書き込み操作回数 | 100,000回/日 |
説明:
1. SCDNサイト間のKV名前空間はサイト間参照をサポートしています。現時点では、PagesサイトとSCDNサイト間でのタイプをまたぐ呼び出しはサポートされていません。
2. 各名前空間には1日あたりの読み書きリクエスト回数に上限があり、上限を超えた場合、その名前空間の読み書きリクエストは拒否されます。エッジ関数Runtime APIまたはTencentCloud APIを通じて呼び出す場合、LimitExceededエラーが返され、クォータは翌日00:00:00(UTC+8)に自動的にリセットされます。
関連参考