IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 17LIVE株式会社の特許一覧

特許7426020キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体
<>
  • 特許-キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体 図1
  • 特許-キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体 図2
  • 特許-キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体 図3
  • 特許-キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-24
(45)【発行日】2024-02-01
(54)【発明の名称】キャッシュTTLを決定するためのシステム、方法、及びコンピュータ可読媒体
(51)【国際特許分類】
   H04L 67/5682 20220101AFI20240125BHJP
   H04N 21/2183 20110101ALI20240125BHJP
   H04N 21/24 20110101ALI20240125BHJP
【FI】
H04L67/5682
H04N21/2183
H04N21/24
【請求項の数】 20
(21)【出願番号】P 2022522346
(86)(22)【出願日】2021-09-30
(65)【公表番号】
(43)【公表日】2023-11-21
(86)【国際出願番号】 US2021052777
(87)【国際公開番号】W WO2023055364
(87)【国際公開日】2023-04-06
【審査請求日】2022-04-13
【早期審査対象出願】
(73)【特許権者】
【識別番号】517287224
【氏名又は名称】17LIVE株式会社
(74)【代理人】
【識別番号】100126572
【弁理士】
【氏名又は名称】村越 智史
(72)【発明者】
【氏名】ロイ,カ チョン
(72)【発明者】
【氏名】ウー,シャオ ユアン
(72)【発明者】
【氏名】チェン,ミン-チュ
【審査官】木村 雅也
(56)【参考文献】
【文献】米国特許出願公開第2004/0128346(US,A1)
【文献】米国特許出願公開第2021/0021563(US,A1)
【文献】特開平10-021134(JP,A)
【文献】中国特許出願公開第111586191(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/5682
H04N 21/2183
H04N 21/24
(57)【特許請求の範囲】
【請求項1】
キャッシュサーバ上のデータオブジェクトについてTTL(Time to Live、キャッシュ保持時間)を決定する方法であって、
前記データオブジェクトの更新頻度を検出する工程と、
前記データオブジェクトにアクセスするユーザ数を所定の監視タイミングで監視し、前記監視タイミングにおいて前記データオブジェクトにアクセスしているユーザ数を検出する工程と、
当該更新頻度と当該監視タイミングにおいて検出された当該ユーザ数に基づいてTTLを決定する工程と、
を含むことを特徴とする、キャッシュTTLを決定する方法。
【請求項2】
さらに、前記データオブジェクトにアクセスするユーザ数に基づいて最小キャッシュ保持時間(TTLmin)を決定する工程を含み、そのうち、前記データオブジェクトにアクセスする前記ユーザ数が増加したとき、前記TTLminがより長い時間に決定され、前記TTLが前記TTLmin以上に決定される、ことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項3】
さらに、前記データオブジェクトの更新頻度に基づいて最大キャッシュ保持時間(TTLmax)を決定する工程を含み、そのうち、前記データオブジェクトの更新頻度が増加したとき、前記TTLmaxが短い時間に設定され、前記TTLが前記TTLmax以下に決定される、ことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項4】
さらに、前記データオブジェクトにアクセスするユーザ数に基づいて最小キャッシュ保持時間 (TTLmin)を決定し、そのうち、前記データオブジェクトにアクセスする前記ユーザ数が増加したとき、前記TTLminが長い時間に決定される工程と、
前記データオブジェクトの更新頻度に基づいて最大キャッシュ保持時間(TTLmax)を決定し、そのうち、前記データオブジェクトの更新頻度が増加したとき、前記TTLmaxが短い時間に設定され、前記TTLが前記TTLmax以下、かつTTLmin以上に決定される工程と、
を含むことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項5】
前記TTLmaxがTTLmin以下である場合、前記TTLがTTLminに決定されることを特徴とする、請求項4に記載のキャッシュTTLを決定する方法。
【請求項6】
前記TTLminが失効した後に前記データオブジェクトを提供するバックエンドサーバに到達するユーザ数から推定される1秒あたりの最大クエリ数(QPS) が、前記バックエンドサーバの最大QPS容量未満となるように前記TTLminが決定される、ことを特徴とする、請求項2に記載のキャッシュTTLを決定する方法。
【請求項7】
前記TTLmaxが、前記データオブジェクトの前記更新頻度の逆数と等しい、またはそれ以下に決定されることを特徴とする、請求項3に記載のキャッシュTTLを決定する方法。
【請求項8】
前記データオブジェクトが、アプリケーションのページに対応する、ことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項9】
前記データオブジェクトが、アプリケーションのリーダーボードに対応する、ことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項10】
さらに、前記データオブジェクトにアクセスするユーザ数を常時検出する工程と、
前記更新頻度と常時検出された前記ユーザ数に基づいて、前記TTLを常時決定する工程と、
前記TTLを前記キャッシュサーバに常時更新する工程と、
を含むことを特徴とする、請求項1に記載のキャッシュTTLを決定する方法。
【請求項11】
前記データオブジェクトにアクセスする前記ユーザ数を常時検出し、かつ常時検出された前記データオブジェクトにアクセスする前記ユーザ数に基づいて前記TTLminを常時決定し、前記TTLが前記TTLmax以下かつ前記TTLmin以上であると常時決定し、前記TTLが前記キャッシュサーバに対して常時更新されることを特徴とする、請求項4に記載のキャッシュTTLを決定する方法。
【請求項12】
キャッシュサーバ上のデータオブジェクトに対しTTL(Time to Live、キャッシュ保持時間)を決定するシステムであって、1以上のプロセッサを含み、そのうち、前記1以上のプロセッサが、機械可読命令を実行して、
前記データオブジェクトの更新頻度を検出する工程と、
前記データオブジェクトにアクセスするユーザ数を所定の監視タイミングで監視し、前記監視タイミングにおいて前記データオブジェクトにアクセスしているユーザ数を検出する工程と、
当該更新頻度と当該監視タイミングにおいて検出された当該ユーザ数に基づいてTTLを決定する工程と、
を実行することを特徴とする、キャッシュTTLを決定するシステム。
【請求項13】
前記1または複数のプロセッサが、前記機械可読命令を実行して、さらに、
前記データオブジェクトにアクセスするユーザ数に基づいて最小キャッシュ保持時間(TTLmin)を決定する工程を実行し、そのうち、前記データオブジェクトにアクセスする前記ユーザ数が増加したとき、前記TTLminがより長い時間に決定され、前記TTLが前記TTLmin以上に決定される、
ことを特徴とする、請求項12に記載のキャッシュTTLを決定するシステム。
【請求項14】
前記1または複数のプロセッサが、前記機械可読命令を実行して、さらに、
前記データオブジェクトの更新頻度に基づいて最大キャッシュ保持時間(TTLmax)を決定する工程を実行し、そのうち、前記データオブジェクトの更新頻度が増加したとき、前記TTLmaxが短い時間に設定され、前記TTLが前記TTLmax以下に決定される、
ことを特徴とする、請求項12に記載のキャッシュTTLを決定するシステム。
【請求項15】
前記1または複数のプロセッサが、前記機械可読命令を実行して、さらに、
前記データオブジェクトにアクセスするユーザ数に基づいて最小キャッシュ保持時間 (TTLmin)を決定する工程を実行し、そのうち、前記データオブジェクトにアクセスする前記ユーザ数が増加したとき、前記TTLminが長い時間に決定され、
前記データオブジェクトの更新頻度に基づいて最大キャッシュ保持時間(TTLmax)を決定する工程を実行し、そのうち、前記データオブジェクトの更新頻度が増加したとき、前記TTLmaxが短い時間に設定され、前記TTLが前記TTLmax以下、かつTTLmin以上に決定される、
ことを特徴とする、請求項12に記載のキャッシュTTLを決定するシステム。
【請求項16】
前記TTLmaxがTTLmin以下である場合、前記TTLがTTLminに決定されることを特徴とする、請求項15に記載のキャッシュTTLを決定するシステム。
【請求項17】
前記1または複数のプロセッサが、前記機械可読命令を実行して、さらに、
前記データオブジェクトにアクセスするユーザ数を常時検出する工程と、
前記更新頻度と常時検出された前記ユーザ数に基づいて、前記TTLを常時決定する工程と、
前記TTLを前記キャッシュサーバに常時更新する工程と、
を実行することを特徴とする、請求項12に記載のキャッシュTTLを決定するシステム。
【請求項18】
前記データオブジェクトにアクセスする前記ユーザ数を常時検出し、かつ常時検出された前記データオブジェクトにアクセスする前記ユーザ数に基づいて前記TTLminを常時決定し、前記TTLが前記TTLmax以下かつ前記TTLmin以上であると常時決定し、前記TTLが前記キャッシュサーバに対して常時更新されることを特徴とする、請求項15に記載のキャッシュTTLを決定するシステム。
【請求項19】
キャッシュサーバ上のデータオブジェクトに対しTTL(Time to Live、キャッシュ保持時間)を決定するためのプログラムを含む非一時的なコンピュータ可読媒体であって、そのうち、前記プログラムが、1または複数のコンピュータに、
前記データオブジェクトの更新頻度を検出する工程と、
前記データオブジェクトにアクセスするユーザ数を所定の監視タイミングで監視し、前記監視タイミングにおいて前記データオブジェクトにアクセスしているユーザ数を検出する工程と、
当該更新頻度と当該監視タイミングにおいて検出された当該ユーザ数に基づいてTTLを決定する工程と、
を実行させることを特徴とする、コンピュータ可読媒体。
【請求項20】
前記プログラムが、1または複数のコンピュータに、
前記データオブジェクトにアクセスするユーザ数に基づいて最小キャッシュ保持時間 (TTLmin)を決定し、そのうち、前記データオブジェクトにアクセスする前記ユーザ数が増加したとき、前記TTLminが長い時間に決定される工程と、
前記データオブジェクトの更新頻度に基づいて最大キャッシュ保持時間(TTLmax)を決定し、そのうち、前記データオブジェクトの更新頻度が増加したとき、前記TTLmaxが短い時間に設定され、前記TTLが前記TTLmax以下、かつTTLmin以上に決定される工程と、
を実行させることを特徴とする、請求項19に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネット上の情報の保存に関するものであり、特に、インターネットのキャッシュ上のデータオブジェクトの保存に関する。
【背景技術】
【0002】
キャッシュやキャッシング技術は、オペレーティングシステム、CDN(コンテンツデリバリーネットワーク)を含むネットワーク層、ドメインネームシステム(DNS)、ウェブアプリケーション、データベースなどの技術全体に適用され、活用されている。Q&Aポータル、ゲーム、メディア共有、コンテンツストリーミング、ソーシャルネットワーキングなど、読み取り負荷の高い多くのアプリケーションワークロードにおいて、キャッシュを使用することで遅延を減らし、1秒あたりの入出力処理(IOPS)を向上させることができる。キャッシュされる情報には、データベースへのクエリ結果、計算負荷の高い計算、アプリケーションプログラミングインターフェイス(API)の要求/応答、およびHTML、JavaScript、画像ファイルなどのウェブアーティファクトが含まれる。
【0003】
キャッシングは、CDNサービスにとって非常に重要である。CDNは、ウェブサイトのサーバやアプリケーションのバックエンドサーバなどのバックエンドサーバにあるコンテンツ/データオブジェクトやそのコピーをプロキシサーバやキャッシュサーバに移動し、ウェブサイトの訪問者や近隣からアクセスするアプリケーションの利用者がコンテンツにすばやくアクセスできるようにする。
【0004】
TTL(Time to Live、キャッシュ保持時間)とは、コンテンツ/データオブジェクト(またはコンテンツ/データオブジェクトのコピー)がキャッシュサーバなどのキャッシュシステムに保存されてから削除またはリフレッシュされるまでの時間である。CDNのコンテキストで、TTLは一般的にコンテンツキャッシュを指し、これはウェブサイトやアプリケーションサーバ上のリソース(画像、価格、テキスト、ストリーミングコンテンツなど)のコピーをCDNキャッシュサーバに保存してページロード速度を向上させ、オリジンサーバの帯域消費と作業負荷を軽減するプロセスである。
【発明の概要】
【課題を解決するための手段】
【0005】
本発明の一実施態様に係る方法は、1または複数のコンピュータによって実行される、キャッシュサーバ上のデータオブジェクトのTTL(Time to Live、キャッシュ保持時間)を決定するための方法であり、当該データオブジェクトの更新頻度を検出する工程と、当該データオブジェクトにアクセスするユーザ数を検出する工程と、当該更新頻度と当該ユーザ数に基づいて当該TTLを決定する工程を含む。
【0006】
本発明の一実施態様に係るシステムは、1または複数のプロセッサを含む、キャッシュサーバ上のデータオブジェクトの TTLを決定するためのシステムであって、当該1または複数のコンピュータプロセッサが、機械読み取り可能な命令を実行し、当該データオブジェクトの更新頻度を検出する工程と、当該データオブジェクトにアクセスするユーザ数を検出する工程と、当該更新頻度と当該ユーザ数に基づいて 当該TTLを決定する工程と、を実行する。
【0007】
本発明の一実施態様に係るコンピュータ可読媒体は、キャッシュサーバ上のデータオブジェクトのTTLを決定するためのプログラムを含む非一時的なコンピュータ可読媒体であって、当該プログラムが、1または複数のコンピュータに、当該データオブジェクトの更新頻度を検出する工程と、当該データオブジェクトにアクセスするユーザ数を検出する工程と、当該更新頻度と当該ユーザ数に基づいて当該TTLを決定する工程と、を実行させる。
【図面の簡単な説明】
【0008】
図1】本発明の一部の実施態様に基づく通信システムの構成を示す概略図である。
図2】本発明の一部の実施態様に基づく通信システムの例示的な機能構成図である。
図3】本発明の一部の実施態様に基づく通信システムの動作を示す例示的なシーケンス図である。
図4】本発明の一部の実施態様に基づく工程を示すフローチャートである。
【発明を実施するための形態】
【0009】
データオブジェクトのTTLは、キャッシュサーバ上の当該データオブジェクト(または当該データオブジェクトのコピー)の更新速度を管理し、当該データオブジェクトにアクセス可能なアプリケーションやウェブサイトを訪れる訪問者に当該データオブジェクトの「古い」バージョンが提供されないように確約することが理想的である。TTLは、アプリケーションやウェブサイトのページロード時間(つまり、キャッシュされたデータはロードが速くなる)とコンテンツの鮮度(つまり、長い間キャッシュされたデータが古くなる可能性がある)に直接影響を与える。
【0010】
静的なファイルやデータオブジェクト(画像ファイル、PDF など)はほとんど更新されないため、通常はより長いTTLを有する。例えば、eコマースサイトの商品画像のコレクションは、静的コンテンツに相当する。これらはめったに更新されないため、長期間(例えば、数日または数週間)キャッシュしておくことができる。このため、TTLの設定は予測可能で、保守も容易である。
【0011】
逆に、動的なコンテンツやデータオブジェクト(HTMLファイルなど)は常に更新されるため、正確なTTLの設定が複雑になる。例えば、製品の下にあるコメント欄は、頻繁に変更されるため、動的コンテンツとみなされる。TTLを長く設定しすぎると、コメントの反映が間に合わなくなる。
【0012】
TTLの設定でもう1つ懸念すべき点は、データオブジェクトにアクセスするユーザ数である。多くのユーザが該当するデータオブジェクトにアクセスしようとしているときにTTLを短く設定しすぎると、TTLが終了したときに、多くのユーザがキャッシュサーバで応答を得られず、データオブジェクトのオリジンサーバにアクセス(オリジンサーバに直接アクセスする場合とキャッシュサーバを介してアクセスする場合がある)しなければならなくなる危険性がある。オリジンサーバがサポートできる最大容量を超える数のユーザがオリジンサーバにアクセスした場合、通常、オリジンサーバの1秒あたりのクエリ数(QPS)が過大または過負荷となり、サーバがクラッシュダウンしたり、一部のユーザが正常にデータアクセスを達成できなくなったりする可能性がある。
【0013】
したがって、データオブジェクトの更新頻度やデータオブジェクトにアクセスするユーザ数などの要因に基づいて、データオブジェクトのキャッシュサーバ上におけるTTLをどのように決定するかは、最も新鮮なデータを提供し、ユーザのアクセス障害を防止するとともに、オリジンサーバを機能停止から保護するために極めて重要である。一部の実施態様において、データオブジェクトは、リソースまたはリソースデータと呼ぶことができる。
【0014】
図1に本発明の一部の実施態様に基づく通信システム1の構成を示す概略図を示す。通信システム1は、コンテンツを介したインタラクションを伴うライブストリーミングサービスを提供することができる。ここで言う「コンテンツ」とは、コンピュータ装置で再生可能なデジタルコンテンツを指す。つまり、通信システム1は、ユーザがオンラインで他のユーザとのリアルタイムのインタラクションに参加することを可能にする。通信システム1は、複数のユーザ端末10と、バックエンドサーバ30と、ストリーミングサーバ40とを含む。ユーザ端末10、バックエンドサーバ30、及びストリーミングサーバ40は、ネットワーク90(例えばインターネットとしてもよい)を介して接続される。バックエンドサーバ30は、ユーザ端末および/またはストリーミングサーバ40との間のインタラクションを同期させるサーバとすることができる。一部の実施態様において、バックエンドサーバ30は、アプリケーション(APP)プロバイダのオリジンサーバとしてもよい。ストリーミングサーバ40は、ストリーミングデータまたはビデオデータを取り扱う、または提供するためのサーバである。一部の実施態様において、バックエンドサーバ30とストリーミングサーバ40は、独立したサーバとしてもよい。一部の実施態様において、バックエンドサーバ30とストリーミングサーバ40は、1つのサーバに統合してもよい。一部の実施態様において、ユーザ端末10は、ライブストリーミングのためのクライアント装置である。一部の実施態様において、ユーザ端末10は、視聴者、ストリーマー、アンカー、ポッドキャスター、オーディエンス、リスナーなどと呼ばれることがある。ユーザ端末10、バックエンドサーバ30、及びストリーミングサーバ40はそれぞれ情報処理装置の一例である。一部の実施態様において、ストリーミングは、ライブストリーミングまたはビデオ再生とすることができる。一部の実施態様において、ストリーミングは、オーディオストリーミングおよび/またはビデオストリーミングとすることができる。一部の実施態様において、ストリーミングは、オンラインショッピング、トークショー、タレントショー、娯楽イベント、スポーツイベント、音楽ビデオ、映画、コメディ、コンサートなどのコンテンツを含むことができる。
【0015】
図2に、通信システム1の例示的な機能構成図を示す。図2においては、ネットワーク90を省略し、ユーザ端末10とバックエンドサーバ30を接続するCDNサーバ50が示されている。当該CDNサーバ50は、当該ネットワーク90の一部であってもよい。一部の実施態様において、当該CDNサーバ50は、キャッシュサーバとして機能してもよい。
【0016】
本実施態様において、当該ユーザ端末10は、UIユニット11と、デコーダー12と、レンダラー13と、ディスプレイ13を含む。当該ユーザ端末10は、例えば、API要求を送信し、API応答を受信することにより、当該CDNサーバ50を介して、そのデータオブジェクトの当該バックエンドサーバ30及び当該ストリーミングサーバ40にアクセスすることができる。当該デコーダー12は、受信したデータオブジェクト(ストリーミングデータであってもよい)をデコードし、当該レンダラー13が当該ディスプレイ14に表示する動画を生成する。当該ディスプレイ14は、当該ユーザ端末10のコンピュータ画面で当該映像を描写または表示する。当該UIユニット11は、当該ユーザ端末10のユーザと相互作用するように構成されており、例えば、アプリケーションに関する当該ユーザの操作を受け付ける。一部の実施態様において、当該ユーザ端末10は、動画をエンコードしてストリーミングデータを生成するためのエンコーダ(図示せず)を含んでもよい。
【0017】
図2に示す実施態様における当該CDNサーバ50は、キャッシュ検出部52と、キャッシュストレージユニット54と、TTL管理ユニット56を含む。当該キャッシュ検出部52は、当該CDNサーバ50が、以前に取得またはアクセスした際に要求されたデータオブジェクトまたはリソースを保存しているか否かをチェックするように構成される。当該キャッシュストレージユニット54は、当該ユーザ端末10により以前に取得されたバックエンドサーバ30及び/またはストリーミングサーバ40からのデータオブジェクト(またはデータオブジェクトのコピー)を保存するように構成されている。当該TTL管理ユニット55は、各データオブジェクトについて、TTLまたはキャッシュストレージユニット54に保存される期間を管理する。
【0018】
例えば、当該CDNサーバ50は、当該ユーザ端末10から当該バックエンドサーバ30内のデータオブジェクトにアクセスするための要求(API要求など)を受信すると、キャッシュ検出部52は、マッピング操作または比較操作を実行し、要求されたデータオブジェクトがキャッシュストレージユニット54に保存されているか否かを検出することができる。要求されたデータオブジェクトが当該キャッシュストレージユニット54で見つかる(キャッシュヒットと呼ばれることがある)場合、当該CDNサーバ50は、当該バックエンドサーバ30にアクセスすることなく、保存されたデータオブジェクト、またはキャッシュされたデータオブジェクトを当該ユーザ端末10に送信する。要求されたデータオブジェクトが当該キャッシュストレージユニット54で見つからない(キャッシュミスと呼ばれることがある)場合、当該CDNサーバ50は、当該データオブジェクトにアクセスするために当該バックエンドサーバ30に要求を渡すことができる。キャッシュミスは、当該データオブジェクトが初めて要求されたとき、または当該キャッシュストレージユニット54に保存されたデータオブジェクトの(以前に取得したときの)TTLが期限切れになったときに起こり得る。
【0019】
図2に示す実施態様における当該バックエンドサーバ30は、処理ユニット31、ストレージユニット32、頻度検出ユニット33、ユーザ数検出ユニット34を含む。当該バックエンドサーバ30は、当該CDNサーバ50から要求を受信し、対応するデータオブジェクトで応答する。当該バックエンドサーバ30は、当該CDNサーバ50からAPI要求を受信し、API応答を返すことができる。当該API応答は、要求されたデータオブジェクトとそれに対応するTTL情報を含むことができる。当該TTL情報は、当該TTL管理ユニット56で使用し、当該キャッシュストレージユニット54に保存される当該データオブジェクトに対して当該TTLを設定するために使用されてもよい。
【0020】
当該ストレージユニット32は、当該CDNサーバ50を介して当該ユーザ端末10によりアクセスされるデータオブジェクトを含め、多様なデータとプログラムを保存することができる。当該頻度検出ユニット33は、データオブジェクトの更新頻度を検出または受信するように構成される。一部の実施態様において、当該頻度検出ユニット33は、更新頻度について、Datadogなどの外部統計システムにアクセスしてもよく、これはAPI要求によって行われてもよい。当該ユーザ数検出ユニット34は、データオブジェクトにアクセスするユーザ数を検出または受信するように構成される。一部の実施態様において、当該ユーザ数検出ユニット34は、ユーザ数について、Datadogデータベースなどの外部データベースにアクセスしてもよく、これはAPI要求によって行われてもよい。当該処理ユニット31は、他の多くの機能の中でも、当該CDNサーバ50に当該CDNサーバ50からの要求に応答して、当該CDNサーバ50に対し更新または応答されるデータオブジェクトのTTLを決定するように構成される。一部の実施態様において、当該処理ユニット31は、当該データオブジェクトの更新頻度及び/または当該データオブジェクトにアクセスする当該ユーザ数に基づいてTTLを決定する。
【0021】
一部の実施態様において、当該処理ユニット31は、CPU、GPU等として構成され、アプリの一部であり得る、当該ストレージユニット32に保存された各種プログラムを読み出し、当該プログラムに含まれる各種コマンドや機械読み取り可能な命令を実行する。一部の実施態様において、当該バックエンドサーバ30に含まれる上述の各部材は、処理装置またはプロセッサとみなされてもよい。
【0022】
一部の実施態様において、当該バックエンドサーバ30は、ライブストリーミングサービスを提供するアプリケーションのオリジンサーバである。この場合、当該バックエンドサーバ30内のデータオブジェクトは、ストリーマーのリーダーボードを表す、またはそれに対応するデータオブジェクト、コメントまたはメッセージ情報を表す、またはそれに対応するデータオブジェクト、及び/または、多くのユーザがアクセスする人気ページまたはホットなページであり得るアプリケーションのページを表す、またはそれに対応するデータオブジェクトを含むことができる。当該ストリーミングサーバ40のデータオブジェクトは、ストリーマーからのストリーミングデータを含んでもよい。
【0023】
図3に、本発明の一部の実施態様に基づく通信システムの動作を示す例示的なシーケンス図を示す。一部の実施態様において、図3に、ユーザ端末からの要求に応答して、バックエンドサーバ内のデータオブジェクトがどのようにコピー、更新またはCDNサーバに送信されるかを示す。
【0024】
工程S100において、当該ユーザ端末10は、当該CDNサーバ50にAPI要求を送信し、例えば、アプリケーションやウェブサイトのページ、リーダーボード、メッセージセクションを表す、またはそれに対応し得るデータオブジェクトまたはリソースを要求する。
【0025】
工程S102において、当該CDNサーバ50は、要求された当該データオブジェクトが保存されているか否かを判断する。例えば、キャッシュ検出部52は、検索操作またはマッピング操作を実行し、要求されたデータオブジェクトが当該キャッシュストレージユニット54に保存されているか否かを判断する。本実施態様において、要求されたデータオブジェクトがキャッシュストレージユニット54に見つからず、キャッシュミスとなり、フローは工程S104に進む。
【0026】
工程S104において当該CDNサーバ50は、ユーザ端末10が要求したデータオブジェクトのAPI要求を当該バックエンドサーバ30に送信する(または、当該ユーザ端末10のAPI要求を渡す)。
【0027】
工程S106において、当該バックエンドサーバ30は、要求されたデータオブジェクトを準備または取得して、当該データオブジェクトのTTLを決定し、当該データオブジェクトが当該CDNサーバ50にどのくらいの期間保存されるかにこれが適用される。TTLの決定に関する詳細は、後述する。
【0028】
工程S108において、当該バックエンドサーバ30は、要求されたデータオブジェクト(当該データオブジェクトのコピー)と対応するTTL情報を少なくとも含む、API応答を当該CDNサーバ50に送信する。当該TTL情報は、当該CDNサーバ50の当該TTL管理ユニット56により、データオブジェクトの保存期間の長さを管理するために使用される。
【0029】
工程S110において、当該CDNサーバ50は、要求された当該データオブジェクトとそのTTL情報を含む、当該API応答を当該バックエンドサーバ30から受信する。当該CDNサーバ50は、当該データオブジェクトを当該キャッシュストレージユニット54に保存し、TTL情報に従って、当該TTL管理ユニット56内で対応するTTLを設定することができる。
【0030】
工程S112において、当該CDNサーバ50は、少なくとも要求された当該データオブジェクトを含むAPI応答を当該ユーザ端末10に送信する。ここまでで、データオブジェクトにアクセスする例示的なラウンドが完了し、当該ユーザ端末10は、受信したデータオブジェクトをアプリケーションにおける操作、例えば、リーダーボードの確認、アプリケーションのページ表示、または最新のコメント情報の取得のために使用することができる。
【0031】
工程S114において、ユーザ端末10は、再び、同じデータオブジェクトにアクセスするためのAPI要求を当該CDNサーバ50に送信するが、これは、ページ、リーダーボードまたはコメント欄を更新するためのアプリケーションにおける定期的な要求またはトリガーに従って実行されてもよい。
【0032】
工程S116において、当該CDNサーバ50は、要求された当該データオブジェクトが保存されているか否かを判断する。例えば、キャッシュ検出部52は、検索操作またはマッピング操作を実行し、要求されたデータオブジェクトが当該キャッシュストレージユニット54に保存されているか否かを判断する。この例において、以前に取得またはアクセスしたデータオブジェクトが工程S110で当該キャッシュストレージユニット54に保存されており、対応するTTLがまだ失効していない。したがって、要求されたデータオブジェクトを当該キャッシュストレージユニット54で見つけることができ、これがキャッシュヒットとなって、フローは当該バックエンドサーバ30にアクセスする必要なく工程S118に進む。
【0033】
工程S118において、当該CDNサーバ50は当該キャッシュストレージユニット54に保存されている要求されたデータオブジェクトを少なくとも含むAPI応答をユーザ端末10に送信する。この場合、データオブジェクトの内容は変更されない。
【0034】
図4に本発明の一部の実施態様に基づく工程のフローチャートを示す。図4に、図3の工程S106において、アクセスされたデータオブジェクトのTTLがどのように当該バックエンドサーバ30によって決定され得るのかを示す。
【0035】
工程S200において、要求されたデータオブジェクトの更新頻度が、例えば、当該バックエンドサーバ30の当該頻度検出ユニット33により、検出または受信される。一部の実施態様において、当該頻度検出ユニット33は、更新頻度について、Datadogデータベースなどの外部データベースにアクセスしてもよく、これはAPI要求によって行われてもよい。当該データオブジェクトはさまざまな方法で更新され得る。例えば、リーダーボードやコメント欄に対応するデータオブジェクトは、さまざまなユーザ端末からの投稿や入力情報によって、当該データオブジェクトを管理または保持するデータベース(当該バックエンドサーバまたは別のデータベースであり得る)に更新される可能性がある。別の例として、アプリケーションのホットなページまたは人気ページに対応するデータオブジェクトは、当該アプリケーションの当該バックエンドサーバによって更新され得るため、更新頻度のために別のデータベースにアクセスする必要がないことがある。
【0036】
工程S202において、当該データオブジェクトの更新頻度に基づいて、最大キャッシュ保持時間TTLmaxが、例えば、当該バックエンドサーバ30の処理ユニット31により決定される。一部の実施態様において、当該TTLmaxは、当該データオブジェクトの更新頻度が多いとき、より短く決定される。一部の実施態様において、当該TTLmaxは当該更新頻度に反比例する。一部の実施態様において、当該TTLmaxは、当該データオブジェクトの当該更新頻度の逆数と等しい、またはそれ以下に決定される。例えば、更新頻度が1秒当たり2回である場合、TTLmaxは、1/2秒に等しい、またはそれ以下とすることができる。また、別の例として、更新頻度が5秒に1回の場合、TTLmaxは5秒以下とすることができる。一部の実施態様において、インターネットにおける信号伝送遅延を考慮し、TTLmaxは更新頻度の逆数から所定のオフセットを有するように設定されてもよく、そのうち、この所定のオフセットは信号伝送遅延またはAPI応答時間をカバーまたは補償するために用いられ、ネットワーク条件など実際の実践に従い決定することができる。例えば、更新頻度が5秒に1回の場合、TTLmaxは(5-2)秒に等しくてもよく、そのうち、5は頻度の逆数であり、2は所定のオフセットである。
【0037】
工程S204において、当該データオブジェクトにアクセスするユーザ数が、例えば、当該バックエンドサーバ30の当該ユーザ数検出ユニット34により、検出または受信される。一部の実施態様において、当該ユーザ数検出ユニット34は、ユーザ数について、Datadogデータベースなどの外部データベースにアクセスしてもよく、これはPI要求によって行われてもよい。
【0038】
工程S206において、当該データオブジェクトにアクセスするユーザ数に基づいて、最小キャッシュ保持時間TTLminが、例えば、当該バックエンドサーバ30の当該処理ユニット31により決定される。一部の実施態様において、当該TTLminは、当該データオブジェクトにアクセスするユーザ数が増加したとき、より長く決定される。一部の実施態様において、当該TTLminは、当該TTLminが失効した後に当該データオブジェクトを提供する当該バックエンドサーバに到達する当該ユーザ数からの推定QPSが、当該バックエンドサーバの最大QPS容量以下となるように決定される。
【0039】
工程S208において、当該データオブジェクトのTTLは、当該最大キャッシュ保持時間TTLと当該最小キャッシュ保持時間TTLminに基づいて、例えば、当該バックエンドサーバ30の当該処理ユニット31により決定される。一部の実施態様において、当該TTLは、当該TTLminと等しい、またはそれよりも大きいものとして決定される。一部の実施態様において、当該TTLは、当該TTLmaxと等しい、またはそれよりも小さいものとして決定される。一部の実施態様において、当該TTLは、当該TTLmaxと等しい、またはそれよりも小さく、かつ当該TTLminと等しい、またはそれよりも大きいものとして決定される。一部の実施態様において、当該TTLは、TTLmaxがTTLminと等しい、またはそれよりも小さい場合、TTLminとして決定される。
【0040】
一部の実施態様において、最大キャッシュ保持時間TTLmaxは、TTLの最大値を設定し、それにより、当該ユーザ端末が常に当該データオブジェクトの最新バージョンを取得するよう確約する。更新頻度の高いデータオブジェクトでは、対応するTTLmaxが短く設定され、当該データオブジェクトが当該CDNサーバ上に存在する時間が短くなる。したがって、ユーザ端末からの当該データオブジェクトの要求は、(当該TTLmaxが失効し、当該データオブジェクトが当該CDNサーバ上で見つからなくなったときに)当該CDNサーバを経由して当該バックエンドサーバにより高い頻度でアクセスし、最新バージョンのデータオブジェクトを取得する必要が生じることになる。一部の実施態様において、低い更新頻度のデータオブジェクトの場合、対応するTTLmaxはより長く設定され、当該データオブジェクトは当該CDNサーバ上により長い時間存在する。したがって、ユーザ端末からの当該データオブジェクトの要求は、(当該TTLmaxが失効し、当該データオブジェクトが当該CDNサーバ上で見つからなくなったときに)当該CDNサーバを経由して当該バックエンドサーバにアクセスする必要性が生じる頻度がより低くなり、当該バックエンドサーバの負担が軽減される可能性がある。
【0041】
一部の実施態様において、データオブジェクトの更新頻度は、例えば、図2中の当該バックエンドサーバ30の当該頻度検出ユニット33により、常時または定期的に監視または追跡されてもよい。当該処理ユニット31は、常時監視された更新頻度を利用して、TTLmaxを常時決定し、TTLmax及びTTLLminに基づいてTTLを決定してもよい。一部の実施態様において、当該バックエンドサーバ30は、当該CDNサーバ50に保存された対応するデータオブジェクトに対してTTLを設定するために、当該CDNサーバ50に対しTTL情報を常に更新してもよい。一部の実施態様において、当該バックエンドサーバ30は、データオブジェクトの更新頻度の変化が検出されると、当該CDNサーバ50に対してTTL情報を更新し、ユーザ端末がアクセスするデータオブジェクトがその最新バージョンであることを保証することができる。一部の実施態様において、当該TTLの更新は当該CDNサーバ50からの要求を必要としなくてもよい。
【0042】
一部の実施態様において、最小キャッシュ保持時間TTLminは、TTLの最小値を設定することにより、例えば、TTLminが切れた直後のタイミング及び/またはデータオブジェクトがキャッシュサーバに送信またはコピーされる前のタイミングで、ユーザ端末からの要求により、当該バックエンドサーバが圧倒されたり過負荷になったりすることを防止する。多くのユーザ端末によりアクセスされるデータオブジェクトの場合、対応するTTLminはより長く設定され、当該データオブジェクトは当該CDNサーバ上により長い時間存在する。したがって、当該データオブジェクトにアクセスするユーザ数がまだ多い場合、ユーザ端末からの当該データオブジェクトの要求は、より長い時間当該CDNサーバを経由して当該バックエンドサーバにアクセスする必要がなくなり、当該バックエンドサーバのクラッシュダウンやアクセス障害のリスクを低減することが可能となる。
【0043】
一部の実施態様において、TTLminは、例えば、10秒後、30秒後、または1分後などこれからのタイミングで対応するデータオブジェクトにアクセスしようとするユーザの推定ユーザ数によって決定されてもよい。当該推定ユーザ数は、ユーザ行動データ、アプリケーションイベントデータ及び/またはそれらの相関データなどの履歴データによってトレーニングされた機械学習アルゴリズムを含む、さまざまな推定メカニズムによって達成されてもよい。例えば、TTLminは、データオブジェクトにアクセスするユーザ数が、当該バックエンドサーバをクラッシュダウンのリスクに陥らせない、またはアクセス障害を引き起こさないレベルまで減少すると推定または期待される長さに設定することができる。
【0044】
一部の実施態様において、当該データオブジェクトにアクセスするユーザ数は、例えば、図2中の当該バックエンドサーバ30の当該ユーザ数検出ユニット34により、常時または定期的に監視または追跡されてもよい。当該処理ユニット31は、常時監視されたアクセスユーザ数を利用して、TTLminを常時決定し、TTLmax及びTTLminに基づいてTTLを決定する。一部の実施態様において、当該バックエンドサーバ30は、当該CDNサーバ50に保存された対応するデータオブジェクトに対してTTLを設定するために、当該CDNサーバ50に対しTTL情報を常に更新してもよい。一部の実施態様において、当該TTLの更新は当該CDNサーバ50からの要求を必要としなくてもよい。例えば、多くのユーザ数によりアクセスされることが予想されるデータオブジェクト(例えば、アプリケーションのホットなページに対応するデータオブジェクトなど)の場合、当該バックエンドサーバ30はリアルタイムのアクセスユーザ数に基づいてTTL設定を継続的にまたは常時更新することができる。上述のように、TTLの決定は、常に最新のアクセスユーザ数を考慮したものであり、そのため当該CDNサーバにおけるTTL失効後のクラッシュダウンやアクセス失敗のリスクを回避することができる。一部の実施態様において、対応するデータオブジェクトにより多くのユーザ端末からのアクセスがある場合、TTLmin(およびTTL)は当該CDNサーバに対してより頻繁に決定及び/または更新行うことができる。
【0045】
また、TTLmaxがTTLminと同等かそれ以下である状況もあり得る。例えば、データオブジェクトの更新頻度が高く、多くのユーザがアクセスする場合、当該データオブジェクトはTTLmaxが短く、TTLminが長くなる場合がある。一部の実施態様において、TTLmax がTTLmin以下である場合、TTLはTTLminに決定される。つまり、一部の実施態様において、TTLの決定時、TTLminの優先度または重要度のウェイトはTTLmax より高い場合があり、これは、TTLminの目的の1つが当該バックエンドサーバを過負荷やクラッシュから保護することであるためである。
【0046】
また、TTLminに基づいてTTLを決定することで、当該バックエンドサーバの負担を軽減する複雑な仕組みを省略・簡略化できるメリットもある。例えば、通信速度制限の仕組みや、バックエンドサーバの増設を省くことができる。一部の実施態様において、効率的にバックエンドサーバの負荷を分散させる機能を備えた追加のインフラストラクチャ実装や複雑なキャッシュサーバを必要とすることがあるサーバ負荷分散機構を省くことができる。そのため、対応するアプリケーションの運用コストを削減することができる。
【0047】
本発明で説明した処理及び手順は、明示的に説明したものに加えて、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせにより実現することができる。例えば、本明細書で説明した処理および手順は、その処理および手順に対応するロジックを集積回路、揮発性メモリ、不揮発性メモリ、非一過性のコンピュータ可読媒体、磁気ディスクなどの媒体に実装することにより実現することができる。さらに、本明細書に記載された処理および手順は、その処理および手順に対応するコンピュータプログラムとして実現することができ、各種のコンピュータにより実行することができる。
【0048】
さらに、上記実施態様で説明したシステムまたは方法は、固体記憶装置、光ディスク記憶装置、磁気ディスク記憶装置などの非一時的なコンピュータ可読媒体に格納されたプログラムに統合されてもよい。あるいは、プログラムは、インターネットを介してサーバからダウンロードされ、プロセッサにより実行されるものとしてもよい。
【0049】
以上、本発明の技術的内容及び特徴を説明したが、本発明の属する技術分野において通常の知識を有する者であれば、本発明の教示及び開示から逸脱することなく、なお多くの変形及び修正を行うことができる。したがって、本発明の範囲は、既に開示された実施態様に限定されず、本発明から逸脱しない別の変形や修正を含み、特許請求の範囲に含まれる範囲である。
【符号の説明】
【0050】
1 通信システム
10 ユーザ端末
11 UIユニット
12 デコーダー
13 レンダラー
14 ディスプレイ
30 バックエンドサーバ
31 処理ユニット
32 ストレージユニット
33 頻度検出ユニット
34 ユーザ数検出ユニット
40 ストリーミングサーバ
50 CDNサーバ
52 キャッシュ検出部
54 キャッシュストレージユニット
56 TTL管理ユニット
90 ネットワーク
図1
図2
図3
図4