(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-16
(45)【発行日】2022-09-28
(54)【発明の名称】クラウドサービスのデータキャッシング
(51)【国際特許分類】
G06F 9/50 20060101AFI20220920BHJP
G06F 12/084 20160101ALI20220920BHJP
G06F 16/172 20190101ALI20220920BHJP
【FI】
G06F9/50 120A
G06F12/084
G06F16/172
(21)【出願番号】P 2020552263
(86)(22)【出願日】2019-03-14
(86)【国際出願番号】 US2019022168
(87)【国際公開番号】W WO2019194946
(87)【国際公開日】2019-10-10
【審査請求日】2020-10-27
(32)【優先日】2018-04-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】397074301
【氏名又は名称】サイトリックス システムズ,インコーポレイテッド
(74)【代理人】
【識別番号】110002310
【氏名又は名称】特許業務法人あい特許事務所
(72)【発明者】
【氏名】ホアン,フェン
(72)【発明者】
【氏名】ガブリエル,ダンカン スペンサー
(72)【発明者】
【氏名】フロスト,サイモン
(72)【発明者】
【氏名】ラージ,ロス
【審査官】北村 学
(56)【参考文献】
【文献】特開2001-344145(JP,A)
【文献】特開2002-373107(JP,A)
【文献】特開2003-006036(JP,A)
【文献】特開2009-140290(JP,A)
【文献】特開2009-259206(JP,A)
【文献】特開2014-095946(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 16/00 - 16/958
G06F 13/00
G06F 9/455 - 9/54
(57)【特許請求の範囲】
【請求項1】
ユーザデバイスからリソースにアクセスする要求を
コンピューティングデバイスが受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第1の
構成データを示す
第1のデータ識別子を判定することであって、前記第1の
構成データは、前記リソース
のローカル記憶装置に記憶されている、前記判定することと、
構成サービスの負荷
が閾値を上回ることを示す情報に基づいて、
高負荷動作モードになるよう動作モードを判定すること
であって、そこにおいて前記構成サービスは、前記第1の構成データを含む複数の構成データを使用するように前記リソースを構成する、前記判定することと、
前記動作モードが
前記高負荷動作モードを含むと判定した後、共有キャッシュに、
前記複数の構成データの中から前記リソースと関連付けられた第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記
第1のデータ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、
前記複数の構成データの中から前記リソースと関連付けられた第3の
構成データを取得する要求を送信するかどうかを判定することと、
前記第2の構成データが前記共有キャッシュに記憶されていると判定した後、前記第2の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
前記第2の構成データが前記共有キャッシュに記憶されていないと判定した後、前記第3の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
を備えた、方法。
【請求項2】
前記
第1のデータ識別子
と前記第2の構成データを示す第2のデータ識別子とに基づいて、前記第2の
構成データが前記第1の
構成データとは異なるかどうかを判定することと、
前記第2の構成データが前記共有キャッシュに記憶され、前記第2の
構成データが前記第1の
構成データとは異なると判定した後、
前記リソースのローカル記憶装置に記憶されている前記第1の
構成データを前記第2の
構成データと置き換えることと、
を更に備えた、請求項1に記載の方法。
【請求項3】
前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の構成データを示
す第2のデータ識別子が前記第1の構成データを示す前記第1のデータ識別子と同じであるとのインジケーションを受信することと、
前記第2のデータ識別子が
前記第1のデータ識別子と同じであった場合、
前記リソースのローカル記憶装置に記憶されている前記第1の構成データに従って前記リソースを構成することと、
を更に備えた、請求項1に記載の方法。
【請求項4】
前記第2の
構成データは、有効期限の後に期限が切れ、前記方法は、前記動作モードが前記高負荷動作モードを含むと判定し
、前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の
構成データの前記有効期限をリフレッシュすることを更に備えた、請求項1に記載の方法。
【請求項5】
前記第2の
構成データが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第3の
構成データを取得する
前記要求を送信することと、
前記構成サービスから、前記第3の
構成データを受信することと、
前記共有キャッシュに、前記第3の
構成データを挿入することと、
を更に備えた、請求項1に記載の方法。
【請求項6】
第2のリソースにアクセスする第2の要求を受信することと、
第2の動作モードが低負荷動作モードを含むと判定した後、前記構成サービスに、
前記複数の構成データの中から前記第2のリソースと関連付けられた第4の
構成データを取得する要求を送信することと、
を更に備えた、請求項1に記載の方法。
【請求項7】
前記動作モードを判定することは、前記ユーザデバイスのユーザと関連付けられたビジネスの業務時間に基づいて、前記動作モードを判定することを含む、請求項1に記載の方法。
【請求項8】
期間内に、複数のリソースにアクセスする複数の要求を受信することを更に備え、前記動作モードを前記判定することは、
前記閾値を上回る前記複数の要求の数に基づいて、前記動作モードを判定することを含む、請求項1に記載の方法。
【請求項9】
前記共有キャッシュは、メモリ内データベースを含む、請求項1に記載の方法。
【請求項10】
前記データ識別子は、前記第1の
構成データのフィンガプリントを含む、請求項1に記載の方法。
【請求項11】
コンピューティングデバイスであって、
1つ以上のプロセッサと、
命令を記憶したメモリと、を備え、前記命令は、前記1つ以上のプロセッサによって実行されるとき、前記コンピューティングデバイスに、
ユーザデバイスから、リソースにアクセスする要求を受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第1の
構成データを示す
第1のデータ識別子を判定することであって、前記第1の
構成データは、前記リソースの
ローカル記憶装置に記憶される、前記判定することと、
構成サービスの負荷
が閾値を上回ることを示す情報に基づいて、
高負荷動作モードになるよう動作モードを
判定すること
であって、そこにおいて前記構成サービスは、前記第1の構成データを含む複数の構成データを使用するように前記リソースを構成する、前記判定することと、
前記動作モードが
前記高負荷動作モードを含むと判定した後、共有キャッシュに、
前記複数の構成データの中から前記リソースと関連付けられた第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記
第1のデータ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、
前記複数の構成データの中から前記リソースと関連付けられた第3の
構成データを取得する要求を送信するかどうかを判定することと、
前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
前記第2の構成データが前記共有キャッシュに記憶されていないと判定した場合、前記第3の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
を行わせる、前記コンピューティングデバイス。
【請求項12】
前記命令は、前記1つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記
第1のデータ識別子
と前記第2の構成データを示す第2のデータ識別子とに基づいて、前記第2の
構成データが前記第1の
構成データとは異なるかどうかを判定することと、
前記第2の
構成データが前記第1の
構成データとは異なると判定した後、前記第1の
構成データを前記第2の
構成データと置き換えることと、
を行わせる、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記命令は、前記1つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の構成データを示
す第2のデータ識別子が前記第1の構成データを示す前記第1のデータ識別子と同じであるとのインジケーションを受信することと、
前記第2のデータ識別子が
前記第1のデータ識別子と同じであるとのインジケーションを受信した場合、前記リソースのローカル記憶装置に記憶されている前記第1の構成データに基づいて、前記リソースを判定することと、
を行わせる、請求項11に記載のコンピューティングデバイス。
【請求項14】
前記第2の
構成データは、有効期限の後に期限が切れ、前記命令は、前記1つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、前記動作モードが前記高負荷動作モードを含むと判定し
、前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の
構成データの前記有効期限をリフレッシュさせる、請求項11に記載のコンピューティングデバイス。
【請求項15】
前記命令は、前記1つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、
前記第2の
構成データが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第3の
構成データを取得する
前記要求を送信することと、
前記構成サービスから、前記第3の
構成データを受信することと、
前記共有キャッシュに、前記第3の
構成データを挿入することと、
を行わせる、請求項11に記載のコンピューティングデバイス。
【請求項16】
前記命令は、前記1つ以上のプロセッサによって実行されるとき、更に前記コンピューティングデバイスに、期間内に、複数のリソースにアクセスする複数の要求を受信することと、前記命令は、前記1つ以上のプロセッサによって実行されるとき、前記コンピューティングデバイスに、
前記閾値を上回る前記複数の要求の数に基づいて、前記動作モードを判定することによって、前記動作モードを判定することと、
を行わせる、請求項11に記載のコンピューティングデバイス。
【請求項17】
前記共有キャッシュは、メモリ内データベースを含む、請求項11に記載のコンピューティングデバイス。
【請求項18】
コンピュータ可読命令を記憶した1つ以上の非一時的コンピュータ可読媒体であって、前記コンピュータ可読命令は、実行されるとき、コンピューティングデバイスに、
ユーザデバイスから、リソースにアクセスする要求を受信することと、
前記リソースと関連付けられた識別子及び前記リソースと関連付けられた第1の
構成データを示す
第1のデータ識別子を判定することであって、前記第1の
構成データは、前記リソース
のローカル記憶装置に記憶される、前記判定することと、
構成サービスの負荷
が閾値を上回ることを示す情報に基づいて、
高負荷動作モードになるよう動作モードを
判定すること
であって、そこにおいて前記構成サービスは、前記第1の構成データを含む複数の構成データを使用するように前記リソースを構成する、前記判定することと、
前記動作モードが
前記高負荷動作モードを含むと判定した後、共有キャッシュに、
前記複数の構成データの中から前記リソースと関連付けられた第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する要求を送信することであって、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかを判定する前記要求は、前記リソースと関連付けられた前記識別子及び前記
第1のデータ識別子を含む、前記送信することと、
前記共有キャッシュから、前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかのインジケーションを受信することと、
前記リソースと関連付けられた前記第2の
構成データが前記共有キャッシュに記憶されているかどうかの前記インジケーションに基づいて、前記構成サービスに、
前記複数の構成データの中から前記リソースと関連付けられた第3の
構成データを取得する要求を送信するかどうかを判定することと、
前記第2の構成データが前記共有キャッシュに記憶されていると判定した場合、前記第2の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
前記第2の構成データが前記共有キャッシュに記憶されていないと判定した場合、前記第3の構成データに基づいて前記リソースを前記ユーザデバイスに提供することと、
を行わせる、前記1つ以上の非一時的コンピュータ可読媒体。
【請求項19】
前記コンピュータ可読命令は、実行されるとき、更に前記コンピューティングデバイスに、
前記
第1のデータ識別子
および前記第2の構成データを示す第2のデータ識別子に基づいて、前記第2の
構成データが前記第1の
構成データとは異なるかどうかを判定することと、
前記第2の構成データが前記共有キャッシュに記憶され、前記第2の
構成データが前記第1の
構成データとは異なると判定した後、前記第1の
構成データを前記第2の
構成データと置き換えることと、
を行わせる、請求項18に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記コンピュータ可読命令は、実行されるとき、更に前記コンピューティングデバイスに、
前記第2の
構成データが前記共有キャッシュに記憶されていないと判定した後、前記構成サービスに、前記第3の
構成データを取得する
前記要求を送信することと、
前記構成サービスから、前記第3の
構成データを受信することと、
前記共有キャッシュに、前記第3の
構成データを挿入することと、
を行わせる、請求項18に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で説明される発明は概して、コンピュータ及びネットワークハードウェア及びソフトウェアに関する。特に、本発明は、クラウドシステムにおいて共有キャッシュを使用してリソースに対するデータをキャッシュする方法及びシステムに関する。
【背景技術】
【0002】
企業は、クラウドコンピューティングサービスと共に、オブジェクト記憶を含むデータ記憶に対する新たなアプローチをますます採用している。クラウドコンピューティングサービスは、ユーザに対してサービスとして様々なリソースを提供することができる。リソースに対してまたはリソースによって使用されるデータは、クラウドコンピューティングサーバ上で稼働するデータベースに記憶される。データがリソースに対してまたはリソースによって必要とされるとき、データを取得する要求は、クラウドコンピューティングサーバ上で稼働するデータベースに送信される。リソースにアクセスするユーザの数が急激に増加するにつれて、データを取得する多数の要求を扱うアーキテクチャが開発される。
【発明の概要】
【0003】
以下は、本明細書で説明される様々な態様の簡易化された概要を提示する。この概要は、詳細な概説ではなく、必要とされる要素もしくは重要な要素を識別することを意図しておらず、または請求項の範囲を詳しく述べることを意図していない。以下の概要は、以下で提供されるより詳細な説明への導入的な前置きとして簡易化された形式でいくつかの概念を提示するにすぎない。
【0004】
本明細書で説明される発明の態様は、共有キャッシュを使用してリソースに対するデータをキャッシュする方法を実行するように構成されたシステム、装置、及び/またはコンピュータ可読媒体に向けられる。
【0005】
方法は、ユーザデバイスから、及びコンピューティングデバイスによって、リソースにアクセスする要求を受信することを含んでもよい。コンピューティングデバイスは、リソースと関連付けられた識別子及びリソースと関連付けられた第1のデータを示すデータ識別子を判定してもよい。第1のデータは、リソースに記憶されてもよい。コンピューティングデバイスは、構成サービスの負荷を示す情報に基づいて、動作モードを判定してもよい。動作モードが高負荷動作モードを含むと判定した後、コンピューティングデバイスは、共有キャッシュに、リソースと関連付けられた第2のデータが共有キャッシュに記憶されているかどうかを判定する要求を送信してもよい。リソースと関連付けられた第2のデータが共有キャッシュに記憶されているかどうかを判定する要求は、リソースと関連付けられた識別子及びデータ識別子を含んでもよい。コンピューティングデバイスは、共有キャッシュから、リソースと関連付けられた第2のデータが共有キャッシュに記憶されているかどうかのインジケーションを受信してもよい。コンピューティングデバイスは、リソースと関連付けられた第2のデータが共有キャッシュに記憶されているかどうかのインジケーションに基づいて、構成サービスに、リソースと関連付けられた第3のデータを取得する要求を送信するかどうかを判定してもよい。
【0006】
いくつかの発明の態様では、コンピューティングデバイスは、データ識別子に基づいて、第2のデータが第1のデータとは異なるかどうかを判定してもよい。第2のデータが第1のデータとは異なると判定した後、コンピューティングデバイスは、第1のデータを第2のデータと置き換えてもよい。いくつかの実施例では、コンピューティングデバイスは、第2のデータが第1のデータに対応するとのインジケーションを受信してもよい。コンピューティングデバイスは、第1のデータに基づいて、リソースを起動してもよい。
【0007】
いくつかの発明の態様では、第2のデータは、有効期限の後に期限が切れもよい。動作モードが高負荷動作モードを含むと判定した後、コンピューティングデバイスは、第2のデータの有効期限をリフレッシュしてもよい。いくつかの実施例では、第2のデータが共有キャッシュに記憶されていないと判定した後、コンピューティングデバイスは、構成サービスに、第3のデータを取得する要求を送信してもよい。コンピューティングデバイスは、構成サービスから、第3のデータを受信してもよい。コンピューティングデバイスは、共有キャッシュに、第3のデータを挿入してもよい。
【0008】
いくつかの発明の態様では、コンピューティングデバイスは、第2のリソースにアクセスする第2の要求を受信してもよい。第2の動作モードが低負荷動作モードを含むと判定した後、コンピューティングデバイスは、構成サービスに、第2のリソースと関連付けられた第4のデータを取得する要求を送信してもよい。いくつかの実施例では、動作モードを判定することは、ユーザデバイスのユーザと関連付けられたビジネスの業務時間に基づいて、動作モードを判定することを含んでもよい。
【0009】
いくつかの発明の態様では、コンピューティングデバイスは、期間内に、複数のリソースにアクセスする複数の要求を受信してもよい。動作モードを判定することは、閾値を上回る複数の要求の数に基づいて、動作モードを判定することを含んでもよい。いくつかの実施例では、共有キャッシュは、メモリ内データベースを含んでもよい。いくつかの実施例では、データ識別子は、第1のデータのフィンガプリントを含んでもよい。
【0010】
以下で更に詳細に議論される開示の利点と共に、それらの態様及び追加の態様が認識されよう。
【0011】
添付図面を考慮して以下の説明を参照することによって、本明細書で説明される態様及びその利点のより完全な理解を得ることができ、添付図面では、同様の参照符号が同様の特徴を示す。
【図面の簡単な説明】
【0012】
【
図1】本明細書で説明される1つ以上の態様に従って使用することができる例示的なコンピュータシステムアーキテクチャを表す。
【
図2】本明細書で説明される1つ以上の態様に従って使用することができる例示的なリモートアクセスシステムアーキテクチャを表す。
【
図3】本明細書で説明される1つ以上の態様に従って使用することができる例示的な仮想化(ハイパーバイザ)システムアーキテクチャを表す。
【
図4】本明細書で説明される1つ以上の態様に従って使用することができる例示的なクラウドベースシステムアーキテクチャを表す。
【
図5】クラウドシステムにおいてデータをキャッシュする実施例のシステムを示す概略図である。
【
図6】共有キャッシュを使用してデータをキャッシュする実施例の方法を示すフローチャートである。
【
図7】共有キャッシュに記憶されたデータを更新またはリフレッシュする実施例の方法を示すフローチャートである。
【
図8】データ変更イベントに基づいて、共有キャッシュに記憶されたデータを更新する実施例の方法を示すフローチャートである。
【発明を実施するための形態】
【0013】
様々な実施形態の以下の説明では、上記識別され、その一部を形成し、本明細書で説明される態様を実施することができる様々な実施形態の例示によって示される添付図面への参照が行われる。本明細書で説明される範囲から逸脱することなく、他の実施形態が利用されてもよく、構造的及び機能的な修正が行われてもよいことが理解されよう。様々な態様は、他の実施形態が可能であり、様々な異なる方式において実施または実行されることが可能である。
【0014】
以下で更に詳細に説明される主題への全体的な導入として、本明細書で説明される態様は、共有キャッシュを使用してリソースに対するデータをキャッシュすることに向けられる。ユーザは、自身の様々な使用のためにリソースにアクセスすることを要求することができる。リソースと関連付けられたデータは、構成サービス、リソース、または共有キャッシュに記憶されてもよい。構成サービスに記憶されたデータは、修正されてもよい。リソース及び共有キャッシュに記憶されたデータは、構成サービスにおける修正されたデータに基づいて更新されてもよい。構成サービス、リソース、または共有キャッシュに記憶されたデータは、動作モードに基づいて使用されてもよい。
【0015】
本明細書で使用される表現及び専門用語は、説明の目的であり、限定するものと見なされるべきではないことを理解されたい。むしろ、本明細書で使用される表現及び用語は、それらの最も広い解釈及び意味が与えられることになる。「含む(including)」及び「備える(comprising)」、並びにそれらの変形は、以下で表記される項目及びそれらと同等なものと共に、追加の項目及びそれらと同等なものを包含することが意味される。用語「取り付けられる(mounted)」、「接続される(connected)」、「結合される(coupled)」、「位置付けられる(positioned)」、「係合される(engaged)」、及び同様の用語の使用は、直接的及び間接的の両方の取り付け、接続、結合、位置付け、及び係合を含むことが意味される。
【0016】
コンピューティングアーキテクチャ
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン環境、ネットワーク化環境、リモートアクセス(リモートデスクトップとしても知られる)環境、仮想化環境、及び/またはクラウドベース環境を含む、様々な異なるシステム環境において利用されてもよい。
図1は、スタンドアロン環境及び/またはネットワーク化環境において本明細書で説明される1つ以上の例示的な態様を実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一実施例を示す。様々なネットワークノード103、105、107、及び109は、インターネットなどのワイドエリアネットワーク(WAN)101を介して相互接続されてもよい。追加的または代替的に、プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、無線ネットワーク、及びパーソナルネットワーク(PAN)などを含む、他のネットワークが使用されてもよい。ネットワーク101は、例示を目的としており、より少ないまたは追加のコンピュータネットワークと置き換えられてもよい。ローカルエリアネットワーク133は、いずれかの既知のLANトポロジのうちの1つ以上を有してもよく、イーサネットなど、様々な異なるプロトコルのうちの1つ以上を使用してもよい。デバイス103、105、107、及び109、並びに他のデバイス(図示せず)は、ツイストペアワイヤ、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークのうちの1つ以上に接続されてもよい。
【0017】
本明細書で使用され、図面において表される用語「ネットワーク」は、1つ以上の通信経路を介してリモート記憶装置が共に結合されるシステムだけでなく、記憶能力を有するそのようなシステムに時々結合することができるスタンドアロンデバイスをも指す。結果として、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する、単一のエンティティに貢献可能な、データから構成された「コンテンツネットワーク」をも含む。
【0018】
構成要素は、データサーバ103、ウェブサーバ105、及びクライアントコンピュータ107、109を含んでもよい。データサーバ103は、データベースの全体的なアクセス、制御、及び管理、並びに本明細書で説明される1つ以上の例示的な態様を実行するための制御ソフトウェアを提供する。データサーバ103は、ウェブサーバ105に接続されてもよく、ウェブサーバ105を通じて、ユーザは、要求に応じてデータと相互作用し、データを取得する。代替的に、データサーバ103は、ウェブサーバ自体としての役割を果たしてもよく、インターネットに直接接続されてもよい。データサーバ103は、ローカルエリアネットワーク133、ワイドエリアネットワーク101(例えば、インターネット)を通じて、直接もしくは間接接続を介して、またはいくつかの他のネットワークを介してウェブサーバ105に接続されてもよい。ユーザは、リモートコンピュータ107、109を使用して、例えば、ウェブサーバ105によってホストされた1つ以上の外部に公開されたウェブサイトを介してデータサーバ103に接続されたウェブブラウザを使用して、データサーバ103と相互作用することができる。クライアントコンピュータ107、109は、データサーバ103に記憶されたデータにアクセスするために、データサーバ103と合わせて使用されてもよく、または他の目的で使用されてもよい。例えば、クライアントデバイス107から、ユーザは、本分野で既知なインターネットブラウザを使用して、またはコンピュータネットワーク(インターネットなど)を通じてウェブサーバ105及び/またはデータサーバ103と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ105にアクセスすることができる。
【0019】
サーバ及びアプリケーションは、同一の物理マシン上で組み合わされてもよく、別個の仮想アドレスもしくは論理アドレスを保持してもよく、または別個の物理マシン上に常駐してもよい。
図1は、使用することができるネットワークアーキテクチャの一実施例のみを示し、当業者は、本明細書で更に説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは異なってもよく、それらが提供する機能性に二次的であることを認識するであろう。例えば、ウェブサーバ105及びデータサーバ103によって提供されるサービスは、単一のサーバ上で組み合わされてもよい。
【0020】
各々の構成要素103、105、107、109は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってもよい。データサーバ103は、例えば、データサーバ103の全体的な動作を制御するプロセッサ111を含んでもよい。データサーバ103は更に、ランダムアクセスメモリ(RAM)113、リードオンリメモリ(ROM)115、ネットワークインタフェース117、入力/出力インタフェース119(例えば、キーボード、マウス、ディスプレイ、プリンタなど)、及びメモリ121を含んでもよい。入力/出力(I/O)119は、データまたはファイルを読み出し、書き込み、表示し、及び/または印刷する様々なインタフェースユニット及びドライブを含んでもよい。メモリ121は更に、データ処理デバイス103の全体的な動作を制御するオペレーティングシステムソフトウェア123、本明細書で説明される態様を実行するようデータサーバ103に指示する制御ロジック125、並びに本明細書で説明される態様と共に使用することができ、もしくは使用されなくてもよい二次的な、サポート、及び/または他の機能性を提供する他のアプリケーションソフトウェア127を記憶してもよい。制御ロジックは、本明細書でデータサーバソフトウェア125とも称されてもよい。データサーバソフトウェアの機能性は、制御ロジックに符号化されたルールに基づいて自動で行われる動作もしくは決定、ユーザがシステムへの入力を提供することによって手動で行われる動作もしくは決定、及び/またはユーザ入力(例えば、クエリ、データ更新など)に基づいて自動で処理することの組み合わせを指してもよい。
【0021】
メモリ121はまた、第1のデータベース129及び第2のデータベース131を含む、本明細書で説明される1つ以上の態様の実行において使用されるデータを記憶してもよい。いくつかの実施形態では、第1のデータベースは、第2のデータベースを含んでもよい(例えば、別個のテーブル、レポートなどとして)。すなわち、情報は、システム設計に応じて、単一のデータベースに記憶されてもよく、または異なる論理データベース、仮想データベース、もしくは物理データベースに分離されてもよい。デバイス105、107、及び109は、デバイス103に関して説明されるのと同様のアーキテクチャまたは異なるアーキテクチャを有してもよい。当業者は、本明細書で説明されるデータ処理デバイス103(または、デバイス105、107、もしくは109)の機能性が、例えば、複数のコンピュータにわたって処理負荷を分散し、地理的位置、ユーザアクセスレベル、サービス品質(QoS)などに基づいてトランザクションを分けるよう、複数のデータ処理デバイスにわたって展開されてもよいことを理解されよう。
【0022】
本明細書で説明される1つ以上のコンピュータまたは他のデバイスによって実行される1つ以上のプログラムモジュールなど、コンピュータ使用可能もしくは読み出し可能データ及び/またはコンピュータ実行可能命令において1つ以上の態様が具体化されてもよい。概して、プログラムモジュールは、コンピュータまたは他のデバイスにおいてプロセッサによって実行されるとき、特定のタスクを実行し、または特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、実行のためにその後コンパイルされるソースコードプログラミング言語において記述されてもよく、またはハイパーテキストマークアップ言語(HTML)もしくは拡張可能マークアップ言語(XML)など(それらに限定されないが)のスクリプト言語において記述されてもよい。コンピュータ実行可能命令は、不揮発性記憶装置などのコンピュータ可読媒体に記憶されてもよい。ハードディスク、CD-ROM、光学記憶装置、磁気記憶装置、及び/またはそれらのいずれかの組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてもよい。加えて、本明細書で説明されるデータまたはイベントを表す様々な伝送(非記憶)媒体が、金属ワイヤ、光ファイバ、及び/または無線伝送媒体(例えば、空気及び/または空間)などの信号伝達媒体を通じて進行する電磁気波の形式で伝送元と伝送先との間で転送されてもよい。本明細書で説明される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。したがって、様々な機能性は、ソフトウェア、ファームウェア、及び/またはハードウェア、もしくは集積回路及びフィールドプログラマブルゲートアレイ(FPGA)などのハードウェア同等物において全体としてまたは部分的に具体化されてもよい。本明細書で説明される1つ以上の態様をより効率的に実装するために特定のデータ構造が使用されてもよく、そのようなデータ構造は、本明細書で説明されるコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で考慮される。
【0023】
図2を更に参照して、本明細書で説明される1つ以上の態様は、リモートアクセス環境において実装されてもよい。
図2は、本明細書で説明される1つ以上の例示的な態様に従って使用することができる、例示的なコンピューティング環境200においてコンピューティングデバイス201を含む実施例のシステムアーキテクチャを表す。コンピューティングデバイス201は、クライアントアクセスデバイスに対して仮想マシンを提供するように構成されたシングルサーバまたはマルチサーバデスクトップ仮想化システム(例えば、リモートアクセスまたはクラウドシステム)におけるサーバ206aとして使用されてもよい。コンピューティングデバイス201は、サーバの全体的な動作を制御するプロセッサ203、並びにRAM205、ROM207、入力/出力(I/O)モジュール209、及びメモリ215を含む、その関連する構成要素を有してもよい。
【0024】
I/Oモジュール209は、それらを通じてコンピューティングデバイス201のユーザが入力を提供することができる、マウス、キーパッド、タッチスクリーン、スキャナ、光学リーダ、及び/またはスタイラス(もしくは他の入力デバイス(複数可))を含んでもよく、また、音声出力を提供するスピーカのうちの1つ以上、並びにテキスト出力、視聴覚出力、及び/またはグラフィカル出力を提供するビデオ表示デバイスのうちの1つ以上を含んでもよい。本明細書で説明される様々な機能を実行するために、コンピューティングデバイス201を専用コンピューティングデバイスへと構成するようプロセッサ203に命令を提供するソフトウェアが、メモリ215及び/または他の記憶装置に記憶されてもよい。例えば、メモリ215は、オペレーティングシステム217、アプリケーションプログラム219、及び関連するデータベース221など、コンピューティングデバイス201によって使用されるソフトウェアを記憶してもよい。
【0025】
コンピューティングデバイス201は、端末240(クライアントデバイスとも称される)など、1つ以上のリモートコンピュータへの接続をサポートするネットワーク化環境において動作してもよい。端末240は、コンピューティングデバイス103または201に関して上記説明された要素の多くまたは全てを含む、パーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。
図2に表されたネットワーク接続は、ローカルエリアネットワーク(LAN)225及びワイドエリアネットワーク(WAN)229を含むが、他のネットワークをも含んでもよい。LANネットワーク環境において使用されるとき、コンピューティングデバイス201は、ネットワークインタフェースまたはアダプタ223を通じてLAN225に接続されてもよい。WANネットワーク環境において使用されるとき、コンピューティングデバイス201は、コンピュータネットワーク230(例えば、インターネット)など、WAN229を通じて通信を確立するためのモデム227または他のワイドエリアネットワークインタフェースを含んでもよい。図示されるネットワーク接続は、例示であり、コンピュータの間の通信リンクを確立する他の手段が使用されてもよいことが認識されよう。コンピューティングデバイス201及び/または端末240はまた、バッテリ、スピーカ、及びアンテナ(図示せず)など、様々な他の構成要素を含むモバイル端末(例えば、携帯電話、スマートフォン、携帯情報端末(PDA)、ノートブックなど)であってもよい。
【0026】
本明細書で説明される態様も、多数の他の汎用または専用コンピューティングシステム環境または構成により使用可能であってもよい。本明細書で説明される態様による使用に適切であり得る他のコンピューティングシステム、環境、及び/または構成の例は、それらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークパーソナルコンピュータ(PC)、ミニコンピュータ、メインフレームコンピュータ、及び上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含む。
【0027】
図2に示されるように、1つ以上のクライアントデバイス240は、1つ以上のサーバ206a~206n(全体的に本明細書で「サーバ(複数可)206」と称される)と通信していてもよい。一実施形態では、コンピューティング環境200は、サーバ(複数可)206とクライアントマシン(複数可)240との間でインストールされたネットワークアプライアンスを含んでもよい。ネットワークアプライアンスは、クライアント/サーバ接続を管理することができ、いくつかのケースでは、複数のバックエンドサーバ206の間でクライアント接続を負荷分散することができる。
【0028】
クライアントマシン(複数可)240は、いくつかの実施形態では、単一のクライアントマシン240またはクライアントマシン240の単一のグループと称されてもよく、サーバ(複数可)206は、単一のサーバ206またはサーバ206の単一のグループと称されてもよい。一実施形態では、単一のクライアントマシン240が1つよりも多いサーバ206と通信し、別の実施形態では、単一のサーバ206が1つよりも多いクライアントマシン240と通信する。更なる別の実施形態では、単一のクライアントマシン240は、単一のサーバ206と通信する。
【0029】
クライアントマシン240は、いくつかの実施形態では、以下の非包括的な用語、クライアントマシン(複数可)、クライアント(複数可)、クライアントコンピュータ(複数可)、クライアントデバイス(複数可)、クライアントコンピューティングデバイス(複数可)、ローカルマシン、リモートマシン、クライアントノード(複数可)、エンドポイント(複数可)、またはエンドポイントノード(複数可)のうちのいずれか1つと称されてもよい。サーバ206は、いくつかの実施形態では、以下の非包括的な用語、サーバ(複数可)、ローカルマシン、リモートマシン、サーバファーム(複数可)、またはホストコンピューティングデバイス(複数可)のうちのいずれか1つと称されてもよい。
【0030】
一実施形態では、クライアントマシン240は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってもよく、いくつかの実施形態では、仮想マシンは、タイプ1またはタイプ2のハイパーバイザ、例えば、Citrix Systems、IBM、VMware、によって開発されたハイパーバイザ、またはいずれかの他のハイパーバイザによって管理されるいずれかの仮想マシンであってもよい。いくつかの態様では、仮想マシンは、ハイパーバイザによって管理されてもよく、他の態様では、仮想マシンは、サーバ206上で実行するハイパーバイザまたはクライアント240上で実行するハイパーバイザによって管理されてもよい。
【0031】
いくつかの実施形態は、サーバ206または他のリモートに位置するマシン上でリモートに実行するアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイス240を含む。それらの実施形態では、クライアントデバイス240は、アプリケーションウインドウ、ブラウザ、または他の出力ウインドウにおいて出力を表示するよう、仮想マシン受信機プログラムまたはアプリケーションを実行してもよい。一実施例では、アプリケーションは、デスクトップであり、他の実施例では、アプリケーションは、デスクトップを生成または提示するアプリケーションである。デスクトップは、ローカルアプリケーション及び/またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスに対してユーザインタフェースを提供するグラフィカルシェルを含んでもよい。本明細書で使用されるアプリケーションは、オペレーティングシステムのインスタンス(及び、任意選択で、デスクトップも)がロードされた後に実行するプログラムである。
【0032】
サーバ206は、いくつかの実施形態では、クライアント上で実行するシンクライアントまたはリモート表示アプリケーションにデータを送信して、サーバ206上で実行するアプリケーションによって生成された表示出力を提示するために、リモート提示プロトコルまたは他のプログラムを使用する。シンクライアントまたはリモート表示プロトコルは、プロトコルの以下の非包括的なリスト、Citrix Systems,Inc.of Ft.Lauderdale,Floridaによって開発された独立コンピューティングアーキテクチャ(ICA)プロトコル、またはMicrosoft Corporation of Redmond,Washingtonによって製造されたリモートデスクトッププロトコル(RDP)のいずれか1つであってもよい。
【0033】
リモートコンピューティング環境は、1つよりも多いサーバ206a~206nを含んでもよく、その結果、サーバ206a~206nは、例えば、クラウドコンピューティング環境においてサーバファーム206に共に論理的にグループ化される。サーバファーム206は、地理的に分散されると共に、論理的に共にグループ化されたサーバ206、または相互に近接して位置すると共に、論理的に共にグループ化されたサーバ206を含んでもよい。サーバファーム206内で地理的に分散されたサーバ206a~206nは、いくつかの実施形態では、WAN(ワイド)、MAN(メトロポリタン)、またはLAN(ローカル)を使用して通信してもよく、異なる地理的領域は、異なる大陸、大陸の異なる領域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または先述した地理的位置のいずれかの組み合わせとして特徴付けられてもよい。いくつかの実施形態では、サーバファーム206は、単一のエンティティとして管理されてもよく、他の実施形態では、サーバファーム206は、複数のサーバファームを含んでもよい。
【0034】
いくつかの実施形態では、サーバファームは、実質的に類似のタイプのオペレーティングシステムプラットフォーム(例えば、WINDOWS(登録商標)、UNIX(登録商標)、LINUX、iOS、ANDROID(登録商標)、SYMBIANなど)を実行するサーバ206を含んでもよい。他の実施形態では、サーバファーム206は、第1のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第1のグループ、及び第2のタイプのオペレーティングシステムプラットフォームを実行する1つ以上のサーバの第2のグループを含んでもよい。
【0035】
サーバ206は、必要に応じて、いずれかのタイプのサーバ、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケットレイヤ(SSL)VPNサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバもしくはマスタアプリケーションサーバ、アクティブディレクトリを実行するサーバ、またはファイアウォール機能性、アプリケーション機能性、もしくは負荷分散機能性を提供するアプリケーションアクセラレーションプログラムを実行するサーバとして構成されてもよい。他のサーバタイプも使用されてもよい。
【0036】
いくつかの実施形態は、クライアントマシン240から要求を受信し、第2のサーバ206b(図示せず)に要求を転送し、第2のサーバ206b(図示せず)からの応答と共にクライアントマシン240によって生成された要求に応答する第1のサーバ206aを含む。第1のサーバ206aは、クライアントマシン240に対して利用可能なアプリケーションのエニュメレーションと共に、アプリケーションのエニュメレーション内で識別されたアプリケーションをホストするアプリケーションサーバ206と関連付けられたアドレス情報を取得してもよい。第1のサーバ206aは次いで、ウェブインタフェースを使用して、クライアントの要求に対する応答を提示してもよく、識別されたアプリケーションへのアクセスをクライアント240に提供するよう、クライアント240と直接通信してもよい。1つ以上のクライアント240及び/または1つ以上のサーバ206は、ネットワーク230、例えば、ネットワーク101を通じてデータを送信してもよい。
【0037】
図3は、例示的なデスクトップ仮想化システムの高レベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、1つ以上のクライアントアクセスデバイス240に仮想デスクトップ及び/または仮想アプリケーションを提供するように構成された少なくとも1つの仮想化サーバ301を含む、シングルサーバもしくはマルチサーバシステム、またはクラウドシステムであってもよい。本明細書で使用されるように、デスクトップは、1つ以上のアプリケーションをホスト及び/または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカルアプリケーション及び/またはリモートアプリケーションを統合することができるオペレーティングシステムのインスタンスに対してユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、オペレーティングシステムのインスタンス(及び、任意選択で、デスクトップも)がロードされた後に実行するプログラムを含んでもよい。オペレーティングシステムの各々のインスタンスは、物理(例えば、デバイスごとに1つのオペレーティングシステム)または仮想(例えば、単一のデバイス上で稼働するOSの多くのインスタンス)であってもよい。各々のアプリケーションは、ローカルデバイス上で実行されてもよく、またはリモートに位置するデバイス(例えば、リモートの)上で実行されてもよい。
【0038】
コンピュータデバイス301は、仮想化環境における仮想化サーバ、例えば、シングルサーバ、マルチサーバ、またはクラウドコンピューティング環境として構成されてもよい。
図3に示される仮想化サーバ301は、
図2に示されるサーバ206の1つ以上の実施形態によって、または他の既知のコンピューティングデバイスによって展開及び/または実装されてもよい。仮想化サーバ301に含まれるのは、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上の物理メモリ316を含むことができるハードウェアレイヤである。いくつかの実施形態では、ファームウェア312は、物理メモリ316におけるメモリ素子内に記憶されてもよく、物理プロセッサ308のうちの1つ以上によって実行されてもよい。仮想化サーバ301は更に、物理メモリ316におけるメモリ素子に記憶することができ、物理プロセッサ308のうちの1つ以上によって実行することができるオペレーティングシステム314を含んでもよい。また更に、ハイパーバイザ302は、物理メモリ316におけるメモリ素子に記憶されてもよく、物理プロセッサ308のうちの1つ以上によって実行されてもよい。
【0039】
物理プロセッサ308のうちの1つ以上の上で実行するのは、1つ以上の仮想マシン332A~C(全体的に332)であってもよい。各々の仮想マシン332は、仮想ディスク326A~C及び仮想プロセッサ328A~Cを有してもよい。いくつかの実施形態では、第1の仮想マシン332Aは、仮想プロセッサ328Aを使用して、ツールスタック324を含む制御プログラム320を実行してもよい。制御プログラム320は、制御仮想マシン、Dom0、Domain0、またはシステム管理及び/または制御のために使用される他の仮想マシンと称されてもよい。いくつかの実施形態では、1つ以上の仮想マシン332B~Cは、仮想プロセッサ328B~Cを使用して、ゲストオペレーティングシステム330A~Bを実行してもよい。
【0040】
仮想化サーバ301は、仮想化サーバ301と通信するハードウェアの1つ以上の部分を有するハードウェアレイヤ310を含んでもよい。いくつかの実施形態では、ハードウェアレイヤ310は、1つ以上の物理ディスク304、1つ以上の物理デバイス306、1つ以上の物理プロセッサ308、及び1つ以上の物理メモリ316を含んでもよい。物理構成要素304、306、308、及び316は、例えば、上記説明された構成要素のいずれかを含んでもよい。物理デバイス306は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、表示デバイス、スピーカ、光学ドライブ、記憶装置、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素(例えば、ルータ、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想プライベートネットワーク(VPN)ゲートウェイ、動的ホスト構成プロトコル(DHCP)ルータなど)、または仮想化サーバ301に接続され、もしくは仮想化サーバ301と通信する任意のデバイスを含んでもよい。ハードウェアレイヤ310における物理メモリ316は、任意のタイプのメモリを含んでもよい。物理メモリ316は、データを記憶してもよく、いくつかの実施形態では、1つ以上のプログラム、または実行可能命令のセットを記憶してもよい。
図3は、ファームウェア312が仮想化サーバ301の物理メモリ316内に記憶される実施形態を示す。物理メモリ316に記憶されたプログラムまたは実行可能命令は、仮想化サーバ301の1つ以上のプロセッサ308によって実行されてもよい。
【0041】
仮想化サーバ301も、ハイパーバイザ302を含んでもよい。いくつかの実施形態では、ハイパーバイザ302は、任意の数の仮想マシン332を作成及び管理するよう、仮想化サーバ301上でプロセッサ308によって実行されるプログラムであってもよい。ハイパーバイザ302は、仮想マシンモニタ、またはプラットフォーム仮想化ソフトウェアと称されてもよい。いくつかの実施形態では、ハイパーバイザ302は、実行可能命令、及びコンピューティングマシン上で実行する仮想マシンを監視するハードウェアのいずれかの組み合わせであってもよい。ハイパーバイザ302は、仮想化サーバ301上で実行するオペレーティングシステム314内でハイパーバイザが実行する、タイプ2のハイパーバイザであってもよい。仮想マシンは次いで、ハイパーバイザよりも上のレベルで実行してもよい。いくつかの実施形態では、タイプ2のハイパーバイザは、タイプ2のハイパーバイザがユーザのオペレーティングシステムと相互作用するように、ユーザのオペレーティングシステムのコンテキスト内で実行してもよい。他の実施形態では、仮想化環境における1つ以上の仮想化サーバ301は代わりに、タイプ1のハイパーバイザ(図示せず)を含んでもよい。タイプ1のハイパーバイザは、ハードウェアレイヤ310内のハードウェア及びリソースに直接アクセスすることによって、仮想化サーバ301上で実行してもよい。すなわち、図示されるように、タイプ2のハイパーバイザ302がホストオペレーティングシステム314を通じてシステムリソースにアクセスすると共に、タイプ1のハイパーバイザは、ホストオペレーティングシステム314なしに全てのシステムリソースに直接アクセスすることができる。タイプ1のハイパーバイザは、仮想化サーバ301の1つ以上の物理プロセッサ308上で直接実行してもよく、物理メモリ316に記憶されたプログラムデータを含んでもよい。
【0042】
ハイパーバイザ302は、いくつかの実施形態では、システムリソースへの直接アクセスを有するオペレーティングシステム330または制御プログラム320をシミュレートするいずれかの方式において、仮想マシン332上で実行するオペレーティングシステム330または制御プログラム320に仮想リソースを提供することができる。システムリソースは、それらに限定されないが、物理デバイス306、物理ディスク304、物理プロセッサ308、物理メモリ316、及び仮想化サーバ301のハードウェアレイヤ310に含まれるいずれかの他の構成要素を含んでもよい。ハイパーバイザ302は、仮想ハードウェアをエミュレートし、物理ハードウェアを区画化し、物理ハードウェアを仮想化し、及び/またはコンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。更なる他の実施形態では、ハイパーバイザ302は、仮想化サーバ301上で実行する仮想マシン332に対してプロセッサスケジューリング及びメモリ区画化を制御してもよい。ハイパーバイザ302は、VMWare,Inc.,of Palo Alto,Californiaによって製造されたハイパーバイザ、XENPROJECTハイパーバイザ、その開発者がオープンソースXenProject.orgコミュニティによって監督されるオープンソース製品、Microsoftによって提供されるHyperV、VirtualServer、もしくは仮想PCハイパーバイザ、またはその他を含んでもよい。いくつかの実施形態では、仮想化サーバ301は、ゲストオペレーティングシステムが実行することができる仮想マシンプラットフォームを作成するハイパーバイザ302を実行してもよい。それらの実施形態では、仮想化サーバ301は、ホストサーバと称されてもよい。そのような仮想化サーバの例は、Citrix Systems,Inc.,of Fort Lauderdale,FLによって提供されるXENSERVERである。
【0043】
ハイパーバイザ302は、ゲストオペレーティングシステム330が実行する1つ以上の仮想マシン332B~C(全体的に、332)を作成してもよい。いくつかの実施形態では、ハイパーバイザ302は、仮想マシン332を作成するよう仮想マシンイメージをロードしてもよい。他の実施形態では、ハイパーバイザ302は、仮想マシン332内でゲストオペレーティングシステム330を実行してもよい。更なる他の実施形態では、仮想マシン332は、ゲストオペレーティングシステム330を実行してもよい。
【0044】
仮想マシン332を作成することに加えて、ハイパーバイザ302は、少なくとも1つの仮想マシン332の実行を制御してもよい。他の実施形態では、ハイパーバイザ302は、少なくとも1つの仮想マシン332に、仮想化サーバ301によって提供される少なくとも1つのハードウェアリソースの抽出(例えば、ハードウェアレイヤ310内で利用可能ないずれかのハードウェアリソース)を提示してもよい。他の実施形態では、ハイパーバイザ302は、仮想化サーバ301において利用可能な物理プロセッサ308に仮想マシン332がアクセスする方式を制御してもよい。物理プロセッサ308へのアクセスを制御することが、仮想マシン332がプロセッサ308へのアクセスを有するべきかどうか、及び物理プロセッサ能力が仮想マシン332にどのように提示されるかを判定することを含んでもよい。
【0045】
図3に示されるように、仮想化サーバ301は、1つ以上の仮想マシン332をホストまたは実行してもよい。仮想マシン332は、プロセッサ308によって実行されるとき、仮想マシン332が物理コンピューティングデバイスのように、プログラム及びプロセスを実行することができるように、物理コンピュータの動作を模倣することができる実行可能命令のセットである。
図3は、仮想化サーバ301が3つの仮想マシン332をホストする実施形態を示し、他の実施形態では、仮想化サーバ301は、任意の数の仮想マシン332をホストしてもよい。ハイパーバイザ302は、いくつかの実施形態では、各仮想マシン332に、その仮想マシン332に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供することができる。いくつかの実施形態では、一意の仮想ビューは、仮想マシンパーミッション、1つ以上の仮想マシン識別子へのポリシエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシン上で実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準のうちの1つ以上に基づいてもよい。例えば、ハイパーバイザ302は、1つ以上の安全でない仮想マシン332及び1つ以上の安全な仮想マシン332を作成してもよい。安全でない仮想マシン332は、安全な仮想マシン332がアクセスすることが許可され得るリソース、ハードウェア、メモリ位置、及びプログラムにアクセスすることが防止されることがある。他の実施形態では、ハイパーバイザ302は、各仮想マシン332に、仮想マシン332に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの実質的に同様の仮想ビューを提供することができる。
【0046】
各々の仮想マシン332は、仮想ディスク326A~C(全体的に、326)及び仮想プロセッサ328A~C(全体的に、328)を含んでもよい。仮想ディスク326は、いくつかの実施形態では、仮想化サーバ301の1つ以上の物理ディスク304の仮想化ビュー、または仮想化サーバ301の1つ以上の物理ディスク304の一部である。物理ディスク304の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理されてもよい。いくつかの実施形態では、ハイパーバイザ302は、各仮想マシン332に、物理ディスク304の一意のビューを提供する。よって、それらの実施形態では、各仮想マシン332に含まれる特定の仮想ディスク326は、他の仮想ディスク326と比較されるときに一意であることができる。
【0047】
仮想プロセッサ328は、仮想化サーバ301の1つ以上の物理プロセッサ308の仮想化ビューであってもよい。いくつかの実施形態では、物理プロセッサ308の仮想化ビューは、ハイパーバイザ302によって生成、提供、及び管理されてもよい。いくつかの実施形態では、仮想プロセッサ328は、少なくとも1つの物理プロセッサ308の同一の特性を実質的に全て有する。他の実施形態では、仮想プロセッサ308は、仮想プロセッサ328の特性の少なくともいくつかが対応する物理プロセッサ308の特性とは異なるように、物理プロセッサ308の修正ビューを提供する。
【0048】
図4を更に参照して、本明細書で説明されるいくつかの態様は、クラウドベース環境において実装されてもよい。
図4は、クラウドコンピューティング環境(または、クラウドシステム)400の実施例を示す。
図4において分かるように、クライアントコンピュータ411~414は、クラウドシステムのコンピューティングリソース(例えば、ホストサーバ403a~403b(全体的に、本明細書で「ホストサーバ403」と称される)、記憶リソース404a~404b(全体的に、本明細書で「記憶リソース404」と称される)、及びネットワークリソース405a~405b(全体的に、本明細書で「ネットワークリソース405」と称される))にアクセスするよう、クラウド管理サーバ410と通信してもよい。
【0049】
管理サーバ410は、1つ以上の物理サーバ上で実装されてもよい。管理サーバ410は、例えば、とりわけ、Citrix Systems,Inc.of Ft.Lauderdale,FLによるCLOUDPLATFORM、またはOPENSTACKを稼働させてもよい。管理サーバ410は、クラウドハードウェア及びソフトウェアリソース、例えば、ホストコンピュータ403、データ記憶装置404、及びネットワーキングデバイス405を含む、様々なコンピューティングリソースを管理してもよい。クラウドハードウェア及びソフトウェアリソースは、プライベート構成要素及び/またはパブリック構成要素を含んでもよい。例えば、クラウドは、1つ以上の特定の顧客もしくはクライアントコンピュータ411~414によって、及び/またはプライベートネットワークを通じて使用されることになるプライベートクラウドとして構成されてもよい。他の実施形態では、パブリッククラウドまたはハイブリッドパブリック-プライベートクラウドは、オープンネットワークまたはハイブリッドネットワークを通じて他の顧客によって使用されてもよい。
【0050】
管理サーバ410は、ユーザインタフェースを提供するように構成されてもよく、ユーザインタフェースを通じて、クラウドオペレータ及びクラウド顧客は、クラウドシステム400と相互作用することができる。例えば、管理サーバ410は、アプリケーションプログラミングインタフェース(API)のセット及び/または1つ以上のクラウドオペレータコンソールアプリケーション(例えば、ウェブベースもしくはスタンドアロンアプリケーション)に、クラウドオペレータがクラウドリソースを管理し、仮想化レイヤを構成し、顧客アカウントを管理し、及び他のクラウド管理タスクを実行することを可能にするユーザインタフェースを提供することができる。管理サーバ410はまた、クライアントコンピュータ411~414を介してエンドユーザからクラウドコンピューティング要求、例えば、クラウド内で仮想マシンを作成、修正、または破壊する要求を受信するように構成されたユーザインタフェースを有するAPIのセット及び/または1つ以上の顧客コンソールアプリケーションを含んでもよい。クライアントコンピュータ411~414は、インターネットまたはいくつかの他の通信ネットワークを介して管理サーバ410に接続してもよく、管理サーバ410によって管理されるコンピューティングリソースのうちの1つ以上にアクセスすることを要求してもよい。クライアント要求に応答して、管理サーバ410は、クライアント要求に基づいて、クラウドシステムのハードウェアレイヤにおいて物理リソースを選択及びプロビジョニングするように構成されたリソースマネージャを含んでもよい。例えば、クラウドシステムの管理サーバ410及び追加の構成要素は、クライアントコンピュータ411~414において、ネットワーク(例えば、インターネット)を通じて、顧客に対し、仮想マシン及びそれらの動作環境(例えば、ハイパーバイザ、記憶リソース、ネットワーク要素によって供給されるサービスなど)をプロビジョニング、作成、及び管理するように構成されてもよく、計算リソース、データ記憶サービス、ネットワーキング能力、並びにコンピュータプラットフォーム及びアプリケーションサポートを顧客に提供する。クラウドシステムはまた、セキュリティシステム、開発環境、及びユーザインタフェースなどを含む、様々な特定のサービスを提供するように構成されてもよい。
【0051】
特定のクライアント411~414、例えば、同一のエンドユーザに代わって仮想マシンを作成する異なるクライアントコンピュータ、または同一の会社もしくは組織と提携した異なるユーザが関連してもよい。他の実施例では、異なる会社または組織と提携したユーザなど、特定のクライアント411~414が関連しなくてもよい。関連しないクライアントに対し、仮想マシンに関する情報またはいずれかの1人のユーザの記憶が他のユーザから隠されてもよい。
【0052】
ここで、クラウドコンピューティング環境の物理ハードウェアレイヤを参照して、可用性ゾーン401~402(または、ゾーン)は、物理コンピューティングリソースの併置されたセットを指してもよい。ゾーンは、コンピューティングリソースの全体的なクラウドにおいて他のゾーンから地理的に分離されてもよい。例えば、ゾーン401は、Californiaに位置する第1のクラウドデータセンタであってもよく、ゾーン402は、Floridaに位置する第2のクラウドデータセンタであってもよい。管理サーバ410は、可用性ゾーンの1つに位置してもよく、または別個の位置に位置してもよい。各ゾーンは、ゲートウェイを通じて、管理サーバ410など、ゾーンの外側にあるデバイスとインタフェースする内部ネットワークを含んでもよい。クラウドのエンドユーザ(例えば、クライアント411~414)は、ゾーンの間の区別を認識してもよく、または認識しなくてもよい。例えば、エンドユーザは、指定された量のメモリ、処理パワー、及びネットワーク能力を有する仮想マシンの生成を要求してもよい。管理サーバ410は、ユーザの要求に応答してもよく、ゾーン401またはゾーン402からのリソースを使用して仮想マシンが作成されたかどうかをユーザが知ることなく、仮想マシンを作成するようリソースを割り当ててもよい。他の実施例では、クラウドシステムは、その仮想マシン(または、他のクラウドリソース)が特定のゾーンにおいて、またはゾーン内の特定のリソース403~405に対して割り当てられることをエンドユーザが要求することを許可することができる。
【0053】
この実施例では、各ゾーン401~402は、様々な物理ハードウェア構成要素(または、コンピューティングリソース)403~405の配置、例えば、物理ホスティングリソース(または、処理リソース)、物理ネットワークリソース、物理記憶リソース、スイッチ、及びクラウドコンピューティングサービスを顧客に提供するために使用することができる追加のハードウェアリソースを含んでもよい。クラウドゾーン401~402における物理ホスティングリソースは、仮想マシンインスタンスを作成及びホストするように構成されてもよい、上記説明された仮想化サーバ301など、1つ以上のコンピュータサーバ403を含んでもよい。クラウドゾーン401または402における物理ネットワークリソースは、ファイアウォール、ネットワークアドレス変換器、負荷分散装置、仮想プライベートネットワーク(VPN)ゲートウェイ、及び動的ホスト構成プロトコル(DHCP)ルータなど、クラウド顧客にネットワークサービスを提供するように構成されたハードウェア及び/またはソフトウェアを含む、1つ以上のネットワーク要素405(例えば、ネットワークサービスプロバイダ)を含んでもよい。クラウドゾーン401~402における記憶リソースは、記憶ディスク(例えば、ソリッドステートドライブ(SSD)、磁気ハードディスクなど)及び他の記憶装置を含んでもよい。
【0054】
図4に示される実施例のクラウドコンピューティング環境はまた、仮想マシンを作成及び管理し、クラウドにおいて物理リソースを使用して顧客に他のサービスを提供するように構成された追加のハードウェア及び/またはソフトウェアリソースを有する仮想化レイヤ(例えば、
図1~3に示されるような)を含んでもよい。仮想化レイヤは、ネットワーク仮想化、記憶仮想化などを提供するよう、他の構成要素と共に、
図3において上記説明されたハイパーバイザを含んでもよい。仮想化レイヤは、物理リソースレイヤとは別個のレイヤであってもよく、または同一のハードウェアリソース及び/もしくはソフトウェアリソースのいくつかもしくは全てを物理リソースレイヤと共有してもよい。例えば、仮想化レイヤは、物理コンピューティングリソースと共に仮想化サーバ403の各々にインストールされたハイパーバイザを含んでもよい。代替的に、既知のクラウドシステム、例えば、Windows(登録商標) AZURE(Microsoft Corporation of Redmond Washington)、AMAZON EC2(Amazon.com Inc.of Seattle,Washington)、IBM BLUE CLOUD(IBM Corporation of Armonk,New York)、またはその他が使用されてもよい。
【0055】
クラウドサービスに対するデータキャッシング
図5は、クラウドシステムにおいてデータをキャッシュする実施例のシステムを示す概略図である。システムは、1つ以上のリモートコンピューティングデバイス(例えば、リモートコンピューティングデバイス501A、501B)、クラウドサービス503、及び内部クラウド505を含んでもよい。リモートコンピューティングデバイス501A、501B、クラウドサービス503、及び内部クラウド505は、ネットワーク(例えば、ワイドエリアネットワーク101、コンピュータネットワーク230、インターネット、または他のネットワーク)を介して相互に通信してもよい。
【0056】
リモートコンピューティングデバイス501A、501Bは、例えば、クライアントコンピュータ107、109、クライアントデバイス240、クライアントコンピュータ411~414、または他のコンピューティングデバイスを含んでもよい。クライアントエージェント507は、リモートコンピューティングデバイス501A上で実装されてもよい。ユーザエージェント509は、リモートコンピューティングデバイス501B上で実装されてもよい。
【0057】
クラウドサービス503は、例えば、データサーバ103、ウェブサーバ105、サーバ206、仮想化サーバ301、ゾーン401~402、または他のコンピューティングデバイス上で実装されるプロセスを含んでもよい。クラウドサービス503は、例えば、公用のためにオープンであるパブリッククラウドであってもよい。クラウドサービス503は、構成サービス513、リフレッシュサービス515、リソースマネージャ517(1つ以上のリソース519A~Nを含む)、及び共有キャッシュ521を含んでもよい。
【0058】
クラウドサービス503の構成要素は、1つのサーバまたは複数のサーバ上で実装されてもよい。例えば、構成要素は、中央データセンタにおけるサーバまたはサーバクラスタ上で実装されてもよい。追加的または代替的に、構成要素は、異なる地理的領域に位置する異なるサーバ上で実装されてもよい。追加的または代替的に、構成サービス513は、1つの地理的領域に位置する中央データセンタにおけるサーバ上で実装されてもよく、リソースマネージャ517(リソース519A~Nを含む)は、異なる地理的領域に位置する複数のデータセンタにおいて実装されてもよい。リフレッシュサービス515及び共有キャッシュ521は、リソースマネージャ517の各インスタンスにより近い、異なる地理的領域の各々において実装されてもよい。
【0059】
内部クラウド505は、例えば、データサーバ103、ウェブサーバ105、サーバ206、仮想化サーバ301、ゾーン401~402、または他のコンピューティングデバイス上で稼働するプロセスを含んでもよい。内部クラウド505は、例えば、1つ以上の組織に対して動作するプライベートクラウドであってもよい。内部クラウド505は、例えば、エンドユーザにより近い、組織の施設に位置してもよい。
【0060】
内部クラウド505は、クラウドコネクタ523及び内部リソース525を含んでもよい。クラウドコネクタ523は、クラウドサービス503と内部リソース525との間の通信を可能にすることができる。内部リソース525は、例えば、ドキュメント、ファイル、アプリケーション、デスクトップ、データ(例えば、プライベートデータ)などを含んでもよい。リソース519A~Nなどを介したクラウドサービス503は、クラウドコネクタ523を通じて内部リソース525にアクセスすることができる。
【0061】
システムは、個々のユーザにサービスとしてリソース519A~Nのうちの1つ以上を提供することができる。個々のユーザは、例えば、自然人または法人であってもよい。追加的または代替的に、システムは、ユーザグループにサービスとしてリソース519A~Nを提供することができる。ユーザグループは、多数のユーザを含んでもよい。ユーザグループは、例えば、組織(例えば、ビジネス組織、政府組織など)、または組織の一部であってもよい。ユーザグループは、例えば、クラウドサービス503の顧客であってもよい。
【0062】
ユーザグループは、リソース519A~Nからのいくつかのリソースを制御、使用、または管理してもよい。ユーザグループ(または、ユーザグループと関連付けられた他の人間もしくはエンティティ)のアドミニストレータは、ユーザグループのリソースを管理してもよい。例えば、アドミニストレータは、ユーザグループにおけるユーザがユーザグループのリソースにアクセスすることを承認してもよい。アドミニストレータは、ユーザグループのリソースのリソースをユーザと関連付けてもよい(例えば、ユーザ名及びパスワードを入力することによって、ユーザがリソースにアクセスすることを許可する)。
【0063】
アドミニストレータは、クライアントエージェント507を通じてユーザグループのリソースを管理してもよい。クライアントエージェント507は、例えば、ウェブブラウザ、モバイルアプリケーション、シンクライアント、端末エミュレータなどを含んでもよい。クライアントエージェント507は、クラウドサービス503と通信してもよい。クライアントエージェント507は、ユーザインタフェースを提供することができる。ユーザインタフェースを通じて、アドミニストレータは、ユーザグループのリソースを管理することができる。例えば、アドミニストレータは、ユーザグループのリソースの稼働状態を監視してもよい(例えば、RAM使用率、ディスクドライブ使用率などを監視する)。
【0064】
リソース519A~Nは、例えば、仮想マシン(例えば、仮想マシン332)、サーバ(例えば、ホストサーバ403)、記憶装置(例えば、記憶リソース404)、ネットワーク(例えば、ネットワークリソース405)、データベース、ウェブサーバ、電子メール、仮想デスクトップ、ゲーム、アプリケーション、または他のリソースを含んでもよい。
【0065】
ユーザは、ユーザエージェント509を通じてリソース519A~Nのリソースにアクセスしてもよい。ユーザエージェント509は、例えば、ウェブブラウザ、モバイルアプリケーション、シンクライアント、端末エミュレータなどを含んでもよい。ユーザエージェント509は、リソース519A~Nのうちの1つ以上にアクセスするために使用されてもよい。ユーザエージェント509は、ユーザインタフェースを提供することができる。ユーザインタフェースを通じて、ユーザは、リソースを使用することができる(例えば、リソースへのコマンドを発行する)。例えば、ユーザは、仮想マシンを開始してもよく、アプリケーションを起動してもよく、またはユーザインタフェースを通じて電子メールを送信してもよい。
【0066】
リソースマネージャ517は、例えば、ハイパーバイザ(例えば、ハイパーバイザ302)、StoreFront as a Service(SFaaS)、またはリソース519A~Nを制御することができる他のプロセスを含んでもよい。リソースマネージャ517は、リソースに対する構成データに従って、リソースにハードウェア、ソフトウェア、ネットワーク、または周辺デバイスを割り当ててもよい。リソースマネージャ517は、それらのそれぞれの同一または異なる構成データに従って、リソース519A~Nが同一または異なるように構成してもよい。追加的または代替的に、リソースマネージャ517は、サーバのクラスタによって提供されるワークスペースストア(例えば、ユーザがリソース519A~Nにアクセスするためのインタフェースを提供することができる企業アプリケーションストア)を含んでもよい。サーバのクラスタは、負荷分散装置の後ろにあってもよい。負荷分散装置は、ユーザエージェント509から、リソース519A~Nのリソースにアクセスする要求を受信してもよい。負荷分散アルゴリズムに基づいて、負荷分散装置は、サーバのクラスタのサーバへの要求を経路指定してもよい。サーバのクラスタのサーバは、要求を受信してもよく、リソースを構成することを開始してもよい(例えば、リソースに対する構成データに従って)。リソース519A~Nにアクセスする異なる要求は、負荷分散アルゴリズムに基づいて、サーバのクラスタの異なるサーバに経路指定されてもよい。
【0067】
構成データは、例えば、リソースの構成を指定する情報を含んでもよい。例えば、仮想マシンに対する構成データは、仮想マシンのゲストオペレーティングシステムタイプ及びバージョン、中央処理装置(CPU)能力、ランダムアクセスメモリ(RAM)サイズ、ディスクドライブ、ネットワークアダプタ情報、または他の設定を含んでもよい。追加的または代替的に、構成データは、ユーザと関連付けられたリソースまたはユーザと関連付けられたユーザエージェントが内部リソース525または他のクラウドリソースの全てまたは一部にアクセスすることを許可されるかどうかを指定してもよい。構成データは、リソースまたはユーザエージェントが内部リソース525または他のクラウドリソースにアクセスすることができる方式(例えば、安全なまたは安全でない接続、接続帯域幅、通信プロトコルなど)を指定してもよい。追加的または代替的に、構成データは、ユーザエージェント509によって提供されるユーザインタフェースの設計(例えば、色、シンボル、入力制御、ナビゲーションコンポーネント、情報コンポーネントなど)を指定してもよい。構成データは、他のタイプのデータ(例えば、リソースに対してまたはリソースによって使用されるデータ)であってもよい。
【0068】
リソース519A~Nに対する構成データは、構成サービス513に記憶されてもよい。例えば、構成サービス513は、リソース519A~Nに対する構成データを記憶したデータベースを維持してもよい。ユーザグループのアドミニストレータは、データベースに記憶された構成データを修正してもよい(例えば、構成サービス513に接続されたクライアントエージェント507を通じて)。データベースは、いずれかのタイプのデータベースシステム(例えば、ORACLE Database、MySQL、MICROSOFT SQL Server、IBM DB2など)を含んでもよい。以下は、構成データを記憶した実施例のデータベーステーブルを示す(表1)。
【0069】
【0070】
表では、ユーザグループは、グループ識別子(例えば、GroupA、GroupB、GroupCなど)によって識別されてもよい。各ユーザグループは、対応する構成データを有してもよい。ユーザグループに対する構成データは、ユーザグループのリソースを構成するために使用されてもよい。例えば、ユーザグループGroupAのリソースは、構成データ「RAMサイズ 2GB、ディスク 10GB、ゲストオペレーティングシステム Windows(登録商標)」に従って構成されてもよい。
【0071】
ユーザグループは、いくつかのサブグループに分割されてもよく、各々のサブグループは、別のサブグループに対する構成データと同一または異なってもよい、それ自体の構成データを有してもよい。サブグループに対する構成データは、サブグループと関連付けられたリソースを構成するために使用されてもよい。追加的または代替的に、ユーザグループのリソースの各リソースは、それ自体の特定の構成データを有してもよい。データベースは、リソース識別子及び対応する構成データのレコードを記憶してもよい。リソース識別子は、特定のリソースを識別することができる。対応する構成データは、その特定のリソースを構成するために使用されてもよい。
【0072】
構成サービス513に記憶された構成データは、リソース519A~Nに対してまたはリソース519A~Nによって使用されてもよい。例えば、ユーザがリソースにアクセスすることを要求するとき、リソースマネージャ517は、構成サービス513に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。構成サービス513は、グループ識別子に対応する構成データを識別するよう、構成データデータベースを検索してもよい。構成サービス513は、リソースマネージャ517に構成データを送信してもよい。リソースマネージャ517は、受信された構成データに従ってリソースを構成してもよい。
【0073】
構成サービス513に記憶された構成データを取得する要求の数が多くなるとき(例えば、何百万の要求)、構成サービス513に対する拡張性の課題が存在することがある。例えば、構成サービス513は、構成データを取得する多数の要求を処理するように経済的に構成されることが可能でないことがある。
【0074】
リソース519A~Nに構成データを記憶することは、構成サービス513に対する拡張性の課題を軽減することを支援することができる。例えば、リソースは、リソースマネージャ517によって記憶装置を割り当てられてもよい。記憶装置は、リソースに対してローカルであってもよい。記憶装置は、例えば、キャッシュ、メモリ、ディスク、仮想記憶装置、または他のタイプの記憶装置であってもよい。リソースに対する構成データは、リソースのローカル記憶装置に記憶されてもよく、リソースを構成するよう、リソースマネージャ517によって読み出され及び使用されてもよい。
【0075】
リソースマネージャ517が、リソース519A~Nに記憶された構成データを最新にするよう構成サービス513に定期的にクエリせず、リソース519A~Nに記憶された構成データを定期的に更新しない場合、そこに記憶された構成データは、期限を経過することになることがあり、またはリソース519A~Nの中で不一致になることがある。例えば、リソースに記憶された構成データは、リソースが最初にセットアップされたときに構成サービス513から複製されることがある。後のあるときに、構成データは、リソースを構成するために再度必要とされることがある。しばらくの間、アドミニストレータは、リソースに対する構成データを変更することがあり、その変更は、構成サービス513に記憶された構成データに対して行われることがある。リソースマネージャ517が構成サービス513をクエリしない場合(例えば、定期的に)、リソースに記憶された構成データは、構成サービス513に記憶された最新の構成データとは異なるようになることがある。
【0076】
共有キャッシュ521は、構成サービス513に対する拡張性の課題を軽減することを支援することができ、リソースに記憶された構成データを最新に維持することを支援することができる。共有キャッシュ521は、例えば、クラウドデータベース、または高可用性データベースを含んでもよい。例えば、共有キャッシュ521は、データ記憶のために、ディスク記憶装置とは反対に、メインメモリ(例えば、RAM)に主に依存するメモリ内データベースを含んでもよい。追加的または代替的に、共有キャッシュ521は、REDISデータベースであってもよい。
【0077】
リソース519A~Nに対する構成データは、共有キャッシュ521に記憶されてもよい。例えば、ユーザがリソースにアクセスすることを要求するとき、リソースマネージャ517は、共有キャッシュ521に記憶された構成データを取得する要求を共有キャッシュ521に送信してもよい。共有キャッシュ521は、構成サービス513におけるデータベーステーブルと同様に、データベーステーブルを維持してもよい。例えば、共有キャッシュ521におけるデータベーステーブルは、グループ識別子及び対応する構成データのデータレコードを含んでもよい。共有キャッシュ521は、対応する構成データを検索するキーとしてグループ識別子を使用してもよい。追加的または代替的に、データレコードは、サブグループ識別子及び対応する構成データを含んでもよい。共有キャッシュ521は、サブグループ識別子を検索することに基づいて、構成データを識別してもよい。追加的または代替的に、データレコードは、リソース識別子及び対応する構成データを含んでもよい。共有キャッシュ521は、リソース識別子を検索することに基づいて、構成データを識別してもよい。
【0078】
共有キャッシュに記憶された構成データは、有効期限(例えば、5分)の後に期限が切れることがある。リフレッシュサービス515は、共有キャッシュ521に記憶されたデータをより長い期間の間に維持するよう、データの有効期限をリフレッシュしてもよい。リフレッシュサービス515は、共有キャッシュ521に記憶された構成データを更新してもよい。例えば、リフレッシュサービス515は、アドミニストレータが構成データを変更したかどうかを定期的にチェックしてもよく、変更された構成データに従って、共有キャッシュ521に記憶された構成データを更新してもよい。追加的または代替的に、アドミニストレータが構成サービス513に記憶された構成データを変更するとき、構成サービス513は、リフレッシュサービス515に変更を通知してもよい。リフレッシュサービス515は、通知を受信してもよく、共有キャッシュ521に記憶された構成データを更新することを続行してもよい。
【0079】
共有キャッシュ521がメモリ内の、高可用性データベースを含む場合、共有キャッシュ521は、他のタイプのキャッシュよりも高価であり、またはより多くのエネルギーを消費することがある。リソース519A~Nにアクセスする要求の数または構成データを取得する要求の数が多いときなど、共有キャッシュ521を使用することが好ましいことがあるときの時間を判定することが有益となることがある。リフレッシュサービス515は、ユーザアクセスイベントの数を示す情報に基づいて、動作モードを判定してもよい。動作モードに基づいて、システムは、構成サービス513または共有キャッシュ521を、構成データを取得する元として使用するかどうかを判定してもよい。共有キャッシュ521を使用してデータをキャッシュする方法は、
図6~8と関連して更に議論される。
【0080】
データを取得する要求(例えば、リソースマネージャ517によって構成サービス513または共有キャッシュ521に送信される構成データを取得する要求)は、データ自体の代わりに、データ識別子を通信することが伴うことがある。データ識別子は、データを一意に識別することができるが、データよりも少ないファイルサイズを有することがある。これは、ネットワークトラフィックを削減することを支援することができる。2つのデータ識別子と関連付けられたデータの2つのインスタンスが同一であることを2つのデータ識別子の比較が示すとき、実際のデータが送信されないことがある。
【0081】
図6は、共有キャッシュを使用してデータをキャッシュする実施例の方法を示すフローチャートである。方法は、例えば、
図5と関連して議論されるシステムによって実行されてもよい。方法は、構成データに対して以下で、及び
図6において議論される。しかしながら、方法は、いずれかのタイプのデータ(例えば、リソースに対して使用され、またはリソースによって使用されるデータ)に適用可能であってもよい。
【0082】
ステップ601では、ユーザエージェント509は、リソースマネージャ517に、リソース519A~Nのリソースにアクセスする要求を送信してもよい。リモートコンピューティングデバイス501Bのユーザは、ユーザエージェント509を介して、リソースにアクセスするコマンドを入力してもよい。例えば、ユーザは、ウェブブラウザに、クラウドサービス503を指し示すユニフォームリソースロケータ(URL)を入力してもよく、ウェブブラウザは、いくつかのアイコンを含むウェブページを示してもよい。ユーザは、リモートコンピューティングデバイス501Bの入力デバイス(例えば、タッチスクリーン、キーボード、マウス、ジェスチャなど)を介して、リソースに対するアイコンを選択してもよい。リモートコンピューティングデバイス501B上で実装されるユーザエージェント509は、リソースマネージャ517との通信を開始してもよい。
【0083】
リソースマネージャ517は、ユーザエージェント509からリソースにアクセスする要求を受信してもよい。リソースマネージャ517は、リソースに対する構成データを取得することなど、リソースを構成するプロセスを開始してもよい。ステップ603では、リソースマネージャ517は、ユーザのグループ識別子を判定してもよい(例えば、リソースにアクセスするユーザの要求に基づいて)。例えば、クラウドサービス503にリンクするウェブブラウザにユーザが入力したURLは、ユーザのグループ識別子を示してもよい(例えば、URL「groupA.cloudservice.com」は、グループ識別子が「groupA」であることを示す)。URLに含まれるグループ識別子は、リソースにアクセスする要求に含まれてもよい。
【0084】
追加的または代替的に、リソースマネージャ517は、ユーザの識別を判定してもよい(例えば、リソースにアクセスするユーザの要求に基づいて)。例えば、ユーザは、ウェブブラウザに、クラウドサービス503にリンクするURLを入力してもよい。URLと関連付けられたウェブページは、ユーザ自身を認証するようユーザのユーザ名及びパスワードを入力することをユーザに促すことができる。ユーザ名及びパスワードは、リソースにアクセスする要求に含まれてもよい。リソースマネージャ517は、ユーザ名及びパスワードに基づいて、ユーザの識別を判定してもよい。リソースマネージャ517は、ユーザの識別に基づいて、ユーザと関連付けられたリソースを識別してもよい。
【0085】
ステップ603では、リソースマネージャ517はまた、リソースに記憶された構成データに対する構成データ識別子を判定してもよい。構成データ識別子は、構成データの2つのインスタンスが同一であるかどうかを判定するために使用されてもよい。リソースマネージャ517は、リソースに記憶された構成データを取り出してもよく、取り出された構成データに基づいて、構成データ識別子を生成してもよい。
【0086】
構成データ識別子は、例えば、構成データの全てまたは一部の連続した組み合わせであってもよい。例えば、構成データがデータフィールド、RAMサイズ、ディスクサイズ、及びゲストオペレーティングシステムを含み、それらのデータフィールドの値がそれぞれ2GB、10GB、及びOperating_System_1である場合、構成データ識別子は、2GB 10GB Operating_System_1であってもよい。
【0087】
追加的または代替的に、構成データ識別子は、フィンガプリンティングアルゴリズムによって生成されてもよい。フィンガプリンティングアルゴリズムは、データの元のセットを一意に識別するより短いビット文字列(例えば、フィンガプリント)にデータの大規模セットをマッピングすることができる。フィンガプリンティングアルゴリズムの入力は、構成データまたはその一部を含んでもよい。フィンガプリンティングアルゴリズムの出力は、構成データ識別子を含んでもよい。
【0088】
追加的または代替的に、構成データ識別子は、ハッシュ関数によって生成されてもよい(例えば、構成データ識別子を生成するよう構成データをハッシングする)。追加的または代替的に、構成データ識別子は、エンティティタグ(ETag)を含んでもよく、ETag生成アルゴリズム(例えば、衝突耐性ハッシュ関数)によって生成されてもよい。
【0089】
追加的または代替的に、構成データ識別子は、構成データの最後の修正タイムスタンプに基づいて生成されてもよい。例えば、アドミニストレータが構成サービス513において構成データを修正するとき、修正を行った時間(例えば、タイムスタンプ)が記録されてもよい(例えば、構成データと関連して記憶される)。タイムスタンプは、構成データのバージョンを示すことができる。追加的または代替的に、構成データ識別子は、フィンガプリンティングアルゴリズムまたはハッシュ関数を最後の修正タイムスタンプに適用することによって生成されてもよい。
【0090】
ネットワークを介して構成データ識別子を送信することができるので、構成データ識別子を生成するためにフィンガプリンティングアルゴリズムまたはハッシングアルゴリズムを使用することは、トラフィックを削減すること、及びネットワークの帯域幅を節約することを支援することができる。
【0091】
ステップ605では、リソースマネージャ517は、リフレッシュサービス515に、アクセスイベントを示すメッセージを送信してもよい。アクセスイベントを示すメッセージは、リフレッシュサービス515に、ユーザがリソースにアクセスすることを要求していること、及びリソースに対する構成データが望まれていることを示すことができる。アクセスイベントメッセージは、ユーザのグループ識別子及び/またはメッセージを送信するタイムスタンプを含んでもよい。
【0092】
ステップ607では、リフレッシュサービス515は、メッセージを受信してもよく、アクセスイベントを記録してもよい。メッセージは、動作モード(例えば、高負荷動作モードまたは低負荷動作モード)を判定するためにリフレッシュサービス515によって使用されてもよい。動作モードは、構成サービス513または共有キャッシュ521が構成データを取得する元になるかどうかを示すことができる。リフレッシュサービス515は、リソースにアクセスする異なるユーザ要求の結果として生成されたアクセスイベントを集約してもよい。リフレッシュサービス515は、集約されたアクセスイベントに基づいて、動作モードを判定してもよい。
【0093】
ユーザグループ特有動作モードが判定されてもよい。リフレッシュサービス515は、特定のユーザグループと関連付けられたアクセスイベントを集約してもよく、時間ウインドウ(例えば、10分)内に生成されたユーザグループと関連付けられたアクセスイベントの数を判定してもよい。例えば、リソースにアクセスすることを要求しているユーザがユーザグループAのメンバである場合、リソースにアクセスするユーザの要求の結果として生成されたアクセスイベントは、ユーザグループAに対する動作モードを判定するために、リフレッシュサービス515によって考慮されてもよい。リソースにアクセスすることを要求している別のユーザがユーザグループBのメンバである場合、リソースにアクセスする他のユーザの要求の結果として生成されたアクセスイベントは、ユーザグループAに対する動作モードを判定するために、リフレッシュサービス515によって考慮されなくてもよい。
【0094】
時間ウインドウ内にユーザグループと関連付けられたアクセスイベントの数が閾値を上回る場合、リフレッシュサービス515は、高負荷動作モードになるようユーザグループに対する動作モードを設定してもよい。そうでなければ、リフレッシュサービス515は、低負荷動作モードになるようユーザグループに対する動作モードを設定してもよい。閾値は、構成データを取得する要求を処理する構成サービス513の能力に基づいて判定されてもよい。例えば、構成サービス513は、時間ウインドウ内にN個の要求を扱うことができ、クラウドサービス503がM個のユーザグループを有する場合、閾値は、N/M(NをMで除算)になるよう設定されてもよい。追加的または代替的に、構成サービス513が時間ウインドウ内にN個の要求を扱うことができ、クラウドサービス503がM人のユーザを有し、特定のユーザグループがL人のユーザを含む場合、閾値は、N*L/M(NとLを乗算しMで除算)になるよう設定されてもよい。
【0095】
追加的または代替的に、リフレッシュサービス515は、ユーザグループと関連付けられた業務時間に基づいて、ユーザグループに対する動作モードを判定してもよい。例えば、リフレッシュサービス515は、ユーザグループが位置する(例えば、ユーザグループの主要な位置)領域において標準業務時間の間に動作モードが高負荷動作モードであると判定してもよい。例えば、ユーザグループがアメリカ合衆国にあり、アメリカ合衆国における標準業務時間が午前9時~午後5時である場合、システムは、ユーザグループに対する動作モードが午前9時~午後5時に高負荷動作モードであると判定してもよい。
【0096】
追加的または代替的に、リフレッシュサービス515は、ユーザグループに対する共通動作モードを判定してもよい。リフレッシュサービス515は、ユーザグループと関連付けられた受信されたアクセスイベントを集約してもよく、時間ウインドウ(例えば、10分)内に生成されたアクセスイベントの数を判定してもよい。時間ウインドウ内のアクセスイベントの数が閾値を上回る場合、リフレッシュサービス515は、高負荷動作モードになるよう共通動作モードを設定してもよい。そうでなければ、リフレッシュサービス515は、低負荷動作モードになるよう共通動作モードを設定してもよい。閾値は、構成サービス513の能力に基づいて判定されてもよい。例えば、構成サービス513が時間ウインドウの間に構成データを取得する100万の要求を処理することが可能である場合、閾値は、100万として設定されてもよい。
【0097】
構成データを取得する大量の要求が存在することがあるときの期間を予測するために、履歴データが使用されてもよい。例えば、リフレッシュサービス515は、昨日、先月、または前年に対して記録されたアクセスイベントを考慮してもよい。履歴データが、月曜日の午前10時~午前11時のアクセスイベントの数が閾値を上回ることを示す場合、リフレッシュサービス515は、次の月曜日の午前10時~午前11時の期間の間の動作モードが高負荷動作モードであると判定してもよい。
【0098】
リフレッシュサービス515は、構成サービス513、リソースマネージャ517、共有キャッシュ521、または他の構成要素に、判定された動作モードを通知してもよい。例えば、動作モードが1つの状態から別の状態に変化するとき、リフレッシュサービス515は、動作モードの変化を示すメッセージを送信してもよい。
【0099】
リソースマネージャ517は、1つ以上のユーザグループに対する動作モードを受信してもよい(例えば、リフレッシュサービス515から)。リソースマネージャ517は、リソースにアクセスするユーザの要求に対する動作モードを判定してもよい。例えば、リソースにアクセスする要求に対する動作モードは、要求を送信しているユーザがメンバであるユーザグループに対する動作モードであってもよい。
【0100】
リソースにアクセスするユーザの要求に対する動作モードに基づいて、方法は、ステップの2つの代替的なセットに進んでもよい。リソースマネージャ517が、リソースにアクセスするユーザの要求に対する動作モードが低負荷動作モードを含むと判定する場合609、方法は、ステップ613に進んでもよい。ステップ613では、リソースマネージャ517は、構成サービス513に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。構成サービス513は、要求を受信してもよく、グループ識別子に基づいて、リソースに対する対応する構成データを発見してもよい。ステップ615では、構成サービス513は、リソースマネージャ517に発見された構成データを送信してもよい。リソースマネージャ517は、構成サービス513から構成データを受信してもよい。リソースマネージャ517は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。リソースマネージャ517は、受信された構成データに基づいて、リソースを構成してもよい。
【0101】
追加的または代替的に、ステップ613においてリソースマネージャ517によって送信された構成データを取得する要求は、リソースに記憶された構成データに対する構成データ識別子を含んでもよい。構成サービス513は、構成サービス513に記憶されたリソースに対する構成データに基づいて、第2の構成データ識別子を生成してもよい。構成サービス513は、2つの構成データ識別子を比較してもよい。構成サービス513が、それらが異なると判定する場合、構成サービス513は、リソースマネージャ517に、リソースに記憶された構成データが期限を経過していることを示すメッセージを送信してもよい。メッセージは、構成サービス513に記憶された構成データを含んでもよい。そうでなければ、構成サービス513は、リソースマネージャ517に、リソースに記憶された構成データが最新であること、及びリソースマネージャ517がリソースを構成するためにリソースに記憶された構成データを使用することができることを示すメッセージを送信してもよい。
【0102】
リソースマネージャ517が、リソースにアクセスするユーザの要求に対する動作モードが高負荷動作モードを含むと判定する場合611、方法は、ステップ617に進んでもよい。ステップ617では、リソースマネージャ517は、共有キャッシュ521に、リソースに対する構成データを取得する要求を送信してもよい。要求は、ユーザのグループ識別子を含んでもよい。共有キャッシュ521は、要求を受信してもよい。ステップ619では、共有キャッシュ521は、グループ識別子に基づいて、リソースに対する対応する構成データが共有キャッシュ521に記憶されているかどうかを判定してもよい。
【0103】
リソースに対する構成データが共有キャッシュ521に記憶されているかどうかに基づいて、方法は、ステップの2つの代替的なセットに進んでもよい。共有キャッシュ521が、リソースに対する構成データを記憶していると判定する場合621、方法は、ステップ625に進んでもよい。ステップ625では、共有キャッシュ521は、リソースマネージャ517に、共有キャッシュ521に記憶されたリソースに対する構成データを送信してもよい。リソースマネージャ517は、共有キャッシュ521から構成データを受信してもよい。リソースマネージャ517は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。リソースマネージャ517は、リソースを構成するために、受信された構成データを使用してもよい。
【0104】
追加的または代替的に、ステップ617においてリソースマネージャ517によって送信された構成データを取得する要求は、リソースに記憶された構成データに対する構成データ識別子を含んでもよい。共有キャッシュ521は、共有キャッシュ521に記憶されたリソースに対する構成データに基づいて、第2の構成データ識別子を生成してもよい。共有キャッシュ521は、2つの構成データ識別子を比較してもよい。共有キャッシュ521が、それらが異なると判定する場合、構成サービス513は、リソースマネージャ517に、リソースに記憶された構成データが異なる(期限を経過している)ことを示すメッセージを送信してもよい。メッセージは、共有キャッシュ521に記憶された構成データを含んでもよい。そうでなければ、共有キャッシュ521は、リソースマネージャ517に、リソースに記憶された構成データが最新であること、及びリソースマネージャ517がリソースを構成するためにリソースに記憶された構成データを使用することができることを示すメッセージを送信してもよい。
【0105】
共有キャッシュ521が、リソースに対する構成データを記憶していないと判定する場合623、方法は、ステップ627に進んでもよい。ステップ627では、共有キャッシュ521は、リソースマネージャ517に、リソースに対する構成データが共有キャッシュ521に記憶されていないことを示す応答を送信してもよい。リソースマネージャ517は、応答を受信してもよい。
【0106】
ステップ629では、リソースマネージャ517は、構成サービス513に、サービスに対する構成データを取得する要求を送信してもよい。構成サービス513は、上記説明されたステップ613と同様の方式において、ステップ629において要求に応答してもよい。ステップ631では、構成サービス513は、上記説明されたステップ615と同様の方式において、リソースマネージャ517に構成データを送信してもよい。上記説明されたように、リソースに記憶された構成データに対する構成データ識別子(複数可)は、ステップ629、631におけるリソースマネージャ517と構成サービス513との間の通信における帯域幅を節約するために使用されてもよい。
【0107】
リソースマネージャ517は、構成サービス513から、リソースに対する構成データを受信してもよく、受信された構成データに従ってリソースを構成してもよい。リソースマネージャ517は、リソースに記憶された構成データを受信された構成データと置き換えてもよい。ステップ633では、リソースマネージャ517は、共有キャッシュ521に、リソースマネージャ517が構成サービス513から受信した構成データ(例えば、ステップ631において)を共有キャッシュ521に挿入するメッセージを送信してもよい。追加的または代替的に、構成サービス513が、ステップ631において、リソースに記憶された構成データが最新であることを示す場合、リソースマネージャ517は、ステップ633において、共有キャッシュ521に、リソースに記憶された構成データを共有キャッシュ521に挿入するメッセージを送信してもよい。
【0108】
共有キャッシュ521は、受信された構成データを新たなレコードとしてそのデータベーステーブルに挿入してもよい。その後、共有キャッシュ521が同一のリソースに対するまたは同一のユーザグループと関連付けられたリソースに対する構成データを取得する要求を受信する場合、共有キャッシュ521は、新たなレコードに基づいて、構成データを返してもよい。
【0109】
追加的または代替的に、ユーザグループに対する動作モードが低負荷動作モードから高負荷動作モードに変化するとき、システムは、構成サービス513において、ユーザグループと関連付けられた構成データを識別してもよく、識別された構成データを共有キャッシュ521に挿入してもよい。
【0110】
ステップ635では、共有キャッシュ521は、リソースマネージャ517に、構成データが共有キャッシュ521に挿入されたことを示す応答を送信してもよい。ステップ637では、リソースマネージャ517は、ユーザエージェント509を通じて、構成されたリソースをユーザに対して利用可能にしてもよい。
【0111】
図7は、共有キャッシュに記憶されたデータを更新またはリフレッシュする実施例の方法を示すフローチャートである。方法は、構成データに対して以下で、及び
図7において議論される。しかしながら、方法は、いずれかのタイプのデータ(例えば、リソースに対してまたはリソースによって使用されるデータ)に適用可能であってもよい。方法は、共有キャッシュ521に記憶されたデータの各レコードに対して実行されてもよい。
【0112】
ユーザグループに対する動作モードに基づいて、方法は、ステップの2つの代替的なセットに進んでもよい。システムが、ユーザグループに対する動作モードが低負荷動作モードであると判定する場合703、方法は、共有キャッシュ521に記憶されたユーザグループに対する構成データを更新またはリフレッシュするいずれのステップも実行しなくてもよい。例えば、ユーザグループに対する構成データが共有キャッシュ521に記憶され、ユーザグループに対する動作モードが低負荷動作モードを含む場合、システムは、有効期限の後に構成データの期限が切れることを可能にすることができる。
【0113】
システムが、ユーザグループに対する動作モードが高負荷動作モードであると判定する場合701、方法は、ステップ705に進んでもよい。ステップ705では、リフレッシュサービス515は、高負荷動作モードの間、共有キャッシュ521に記憶された構成データを保持するプロセスを開始し、共有キャッシュ521に記憶された構成データを最新に維持するようウェイクアップしてもよい。リフレッシュサービス515は、定期的にウェイクアップしてもよい。例えば、リフレッシュサービス515は、構成データの有効期限と同一のものである期間の後にウェイクアップしてもよい。追加的または代替的に、リフレッシュサービス515は、構成データの有効期限とは異なる期間の後にウェイクアップしてもよい。
【0114】
ステップ707では、リフレッシュサービス515は、共有キャッシュ521に、ユーザグループと関連付けられた構成データを取得する要求を送信してもよい。要求は、グループ識別子を含んでもよい。共有キャッシュ521は、要求を受信してもよく、グループ識別子に対応する構成データを発見してもよい。ステップ709では、共有キャッシュ521は、リフレッシュサービス515に、ユーザグループと関連付けられた構成データを示す応答を送信してもよい。リフレッシュサービス515は、応答を受信してもよく、応答から構成データを抽出してもよい。リフレッシュサービス515は、抽出された構成データに基づいて、構成データ識別子を生成してもよい。追加的または代替的に、送信されるデータの量を削減するために、リフレッシュサービス515は、ステップ707において、共有キャッシュ521に、ユーザグループと関連付けられた構成データに対する構成データ識別子を取得する要求を送信してもよい。要求を受信した後、共有キャッシュ521は、ユーザグループに対応する構成データを発見してもよく、発見された構成データに基づいて、構成データ識別子を生成してもよい。共有キャッシュ521は、リフレッシュサービス515に生成された構成データ識別子を送信してもよい。
【0115】
ステップ711では、リフレッシュサービス515は、構成サービス513に、構成サービス513に記憶されたユーザグループに対する構成データを取得する要求を送信してもよい。ある時間点において、ユーザグループのアドミニストレータは、クライアントエージェント507を通じて、ユーザグループに対する構成データを修正してもよい。変更は、構成サービス513に記憶された構成データに反映されてもよいが、共有キャッシュ521に記憶された構成データには反映されない。
【0116】
構成データを取得する要求は、ユーザグループのグループ識別子、及びリフレッシュサービス515が共有キャッシュ521から生成または受信した構成データ識別子を含んでもよい。構成サービス513は、要求を受信してもよい。構成サービス513は、グループ識別子と関連付けられた構成データを発見するよう、そのデータベースを検索してもよい。構成サービス513は、発見された構成データに基づいて、第2の構成データ識別子を生成してもよい。構成サービス513は、受信された構成データ識別子及び第2の構成データ識別子が異なることを確認するよう、それらを比較してもよい。それらが異なる場合、構成サービス513は、構成サービス513に記憶された構成データがアドミニストレータによって修正されており、共有キャッシュ521に記憶された構成データが期限を経過していると判定してもよい。そうでなければ、構成サービス513は、構成サービス513に記憶された構成データがアドミニストレータによって修正されておらず、共有キャッシュ521に記憶された構成データが最新であると判定してもよい。
【0117】
構成サービス513に記憶された構成データがアドミニストレータによって変更されているかどうかに基づいて、方法は、ステップの2つの代替的なセットに進んでもよい。構成サービス513が、そこに記憶された構成データが変更されたと判定する場合713、方法は、ステップ717に進んでもよい。ステップ717では、構成サービス513は、リフレッシュサービス515に、構成サービス513に記憶された構成データが変更されたことを示す応答を送信してもよい。応答は、構成サービス513に記憶されたユーザグループと関連付けられた構成データを含んでもよい。リフレッシュサービス515は、応答を受信してもよく、構成データを抽出してもよい。
【0118】
ステップ719では、リフレッシュサービス515は、共有キャッシュ521に、抽出された構成データを共有キャッシュ521に挿入する要求を送信してもよい。共有キャッシュ521は、要求を受信してもよく、構成データを新たなレコードとして共有キャッシュ521に挿入してもよい。ステップ721では、共有キャッシュ521は、構成サービス513に、構成データが共有キャッシュ521に挿入されたことを示す応答を送信してもよい。
【0119】
構成サービス513が、そこに記憶された構成データが変更されていないと判定する場合715、方法は、ステップ723に進んでもよい。ステップ723では、構成サービス513は、リフレッシュサービス515に、構成サービス513に記憶された構成データが変更されていないことを示す応答を送信してもよい。リフレッシュサービス515は、応答を受信してもよい。
【0120】
ステップ725では、リフレッシュサービス515は、共有キャッシュ521に、構成データに対する有効期限をリフレッシュする要求を送信してもよい。共有キャッシュ521は、要求を受信してもよく、構成データに対する有効期限をリフレッシュしてもよい。ステップ727では、共有キャッシュ521は、リフレッシュサービス515に、構成データに対する有効期限がリフレッシュされたことを示す応答を送信してもよい。
【0121】
図8は、データ変更イベントに基づいて、共有キャッシュに記憶されたデータを更新する実施例の方法を示すフローチャートである。方法は、構成データに対して以下で、及び
図8において議論される。しかしながら、方法は、いずれかのタイプのデータ(例えば、リソースに対してまたはリソースによって使用されるデータ)に適用可能であってもよい。
【0122】
ステップ801では、クライアントエージェント507は、構成サービス513に、ユーザグループと関連付けられた構成データを変更する要求を送信してもよい。例えば、ユーザグループのアドミニストレータは、クライアントエージェント507を通じて、構成サービス513に記憶されたユーザグループに対する構成データを変更してもよい。
【0123】
構成サービス513は、要求を受信してもよく、構成データを変更してもよい。ステップ803では、構成サービス513は、クライアントエージェント507に、構成サービス513におけるユーザグループに対する構成データが変更されたことを示す応答を送信してもよい。
【0124】
ステップ805では、構成サービス513は、リフレッシュサービス515に、構成データ変更イベントのメッセージを送信してもよい。メッセージは、ユーザグループに対する構成データが変更されたことを示すことができる。メッセージは、ユーザグループのグループ識別子を含んでもよい。
【0125】
ステップ807では、リフレッシュサービス515は、ユーザグループに対する動作モードを判定してもよい。ユーザグループに対する動作モードが高負荷動作モードを含む場合、リフレッシュサービス515は、ステップ809に進んでもよい。ユーザグループに対する動作モードが低負荷動作モードを含む場合、リフレッシュサービス515は、ステップ807において停止してもよく、ステップ809に進まなくてもよい。
【0126】
ステップ809では、リフレッシュサービス515は、構成サービス513に、ユーザグループと関連付けられた構成データを取得する要求を送信してもよい。ステップ811では、構成サービス513は、リフレッシュサービス515に、要求された構成データを示す応答を送信してもよい。
【0127】
リフレッシュサービス515は、応答を受信してもよく、構成データを抽出してもよい。ステップ813では、リフレッシュサービス515は、共有キャッシュ521に、抽出された構成データを共有キャッシュ521に挿入する要求を送信してもよい。共有キャッシュ521は、要求を受信してもよく、構成データを抽出してもよく、構成データを新たなレコードとして共有キャッシュ521に挿入してもよい。共有キャッシュ521が挿入要求を受信するとき、ユーザグループと関連付けられた構成データが共有キャッシュ521に既に記憶されている場合、共有キャッシュ521は代わりに、抽出された構成データにより、共有キャッシュ521に記憶された構成データを更新してもよい。ステップ815では、共有キャッシュ521は、リフレッシュサービス515に、構成データが共有キャッシュ521に挿入されたことを示す応答を送信してもよい。
【0128】
主題が構造的特徴及び/または方法論的行為に特有の言語において説明されてきたが、添付の特許請求の範囲において定義される主題は、上記説明された特定の特徴または行為に必ずしも限定されないことが理解されよう。むしろ、上記説明された特定の特徴または行為は、以下の特許請求の範囲の実施例の実装態様として説明される。
【0129】
関連出願の相互参照
本出願は、本明細書でその全体を参照することによって組み込まれ、その一部を成す、2018年4月3日に出願され、「DATA CACHING FOR CLOUD SERVICES」と題する米国特許出願第15/944,107号の国際特許出願であり、その優先権を主張する。