(58)【調査した分野】(Int.Cl.,DB名)
前記不動作期間が前記満了期間を超える場合、前記現在のキャッシュサーバから前記次のキャッシュサーバに切り替え、前記次のキャッシュサーバを前記現在のキャッシュサーバとし、ならびに前記現在のキャッシュサーバの前記現在のステータスが動作ステータスであり、および前記現在のキャッシュサーバの動作期間が前記オブジェクトに関連した満了期間を超えるかどうかを判定する行為に戻ることをさらに含むことを特徴とする請求項2に記載の方法。
前記除去サーバはさらに、前記不動作期間が前記満了期間を超えない場合、前記識別子を記録し、前記現在のキャッシュサーバから次のキャッシュサーバに切り替える行為を実行し、前記現在のキャッシュサーバが再開されて、および前記現在のキャッシュサーバの前記現在のステータスが前記動作ステータスに変わる場合、前記記録された識別子に基づいて前記オブジェクトを除去するように構成されることを特徴とする請求項9に記載のシステム。
【発明を実施するための形態】
【0015】
本開示の例示的な実施形態は、分散型キャッシングオブジェクトを除去する方法、システム、およびサーバを提供する。
【0016】
当業者が例示的な実施形態の技術的スキーム、目標、特性、および利点を明確に理解する手助けとなるように、例示的な実施形態における技術的スキームは、例示的な実施形態の添付の図を参照して、より詳細に説明される。
【0017】
例示的な実施形態において、分散型キャッシュシステムにおいて除去されるオブジェクトは、システムの分散型キャッシュサーバに記憶されたオブジェクトである。したがって、既存のシステムが分散型キャッシュサーバにオブジェクトを記憶および回収する方法が、一貫したハッシングアルゴリズムを参照して、最初に説明される。
【0018】
分散型キャッシュシステムにおいて、キャッシュサーバは、一貫したハッシングアルゴリズムから計算されるそれぞれのハッシュ値に基づいて、0〜2
32のリングに配置される。キャッシュサーバのハッシュ値が計算されるとき、ハッシュ値は、選択されるハッシュ機能をキャッシュサーバのIPアドレスに適用することによって得られる。ハッシュ値は、32桁の整数である。キャッシュサーバは、その整数の値に基づいて、リング内の位置上に対応してマッピングされる。
図1は、0〜2
32のリングのある実施例を示す。分散型キャッシュシステムに4つのキャッシュサーバを含ませる。一貫したハッシングの適用時、4つのキャッシュサーバ、すなわち、時計回り方向で配置されるキャッシュサーバ1、キャッシュサーバ2、キャッシュサーバ3、およびキャッシュサーバ4は、
図1に示されるように、それぞれのハッシュ値に基づいて、リング上にマッピングされる。ユーザが、分散型キャッシュサーバを介して、あるオブジェクト(例えば、画像、音声、または映像等のネットワークリソースであり得る)にアクセスすることを望むとき、ハッシュ計算がオブジェクトに適用される(概して、ハッシュ計算をオブジェクトの識別子であるURLに適用する)。得られたハッシュ値は、キーとして使用され、キーの値に基づいて、0〜2
32のリング内の位置上に対応してマッピングされる。キーの位置は、第1のキャッシュサーバをリング上で時計回り方向に見つけるために、最初の位置として使用される。ユーザは、そのように見つけられた第1のキャッシュサーバを介して、オブジェクトにアクセスする。この時計回りの検索を介して見つけられた第1のキャッシュサーバが利用不可能である場合(例えば、ダウンまたはクラッシュ状態)、時計回りの検索は、利用可能なキャッシュサーバが見つけられるまで継続する。ユーザがアクセスすることを望むオブジェクトが、その利用可能なキャッシュサーバ内に存在する場合、オブジェクトは、ディスパッチャを介してユーザに戻される。ユーザがアクセスすることを望むオブジェクトが、その利用可能なキャッシュサーバ内に存在しない場合、そのキャッシュサーバは、ソースデータサーバからオブジェクトを要求し、その中にオブジェクトを記憶し、オブジェクトをユーザに戻すディスパッチャにオブジェクトを戻す。
【0019】
キャッシュサーバに記憶されるそれぞれのオブジェクトは、満了期間を有する。オブジェクトが、その満了期間よりも長くキャッシュされるとき、キャッシュサーバは、オブジェクトを自動的に除去する。その後、ユーザが、キャッシュサーバを介して、再度オブジェクトにアクセスすることを望む場合、キャッシュサーバは、再度ソースデータサーバからオブジェクトを得て、前述のプロセスを繰り返してもよい。
【0020】
図2は、分散型キャッシングオブジェクトを除去する第1の例示的な方法を説明する流れ図を示す。この実施形態は、見つけられたキャッシュサーバの動作期間がオブジェクトの満了期間を超えるときにオブジェクトを除去するプロセスを示す。
【0021】
201で、本方法は、除去依頼を受信する。除去依頼は、除去される予定のオブジェクトの識別子を含む。分散型キャッシュシステムが大規模のウェブサイトにおいて採用されるとき、オブジェクトは、画像、音声、映像等のネットワークリソースを指す。それぞれの特定のネットワークリソースは、URL(ユニバーサルリソースロケータ)を介して位置付けられる。
【0022】
202で、本方法は、識別子のハッシュ結果値を得るために、ハッシングをオブジェクトの識別子に適用する。一実装例において、このブロックは、ハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用するプロセスに相当する。ハッシングは、オブジェクトを記憶および回収するために既存の技術において実装される計算プロセスと一致している。したがって、このブロックは、本明細書において重複して記載されない。
【0023】
203で、本方法は、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけて、対応するキャッシュサーバを現在のキャッシュサーバにする。
【0024】
図1に示される一貫したハッシングリングを参照して、一貫したハッシングをオブジェクトの識別子に適用して、ハッシュ結果値を得た後、ハッシュ結果値を、一貫したハッシングリングの対応する位置上にマッピングされるキーとして使用してもよく、第1のキャッシュサーバを見つける検索を、その位置から開始して、時計回り方向に実行してもよい。そのように見つけられる第1のキャッシュサーバが、ユーザがオブジェクトにアクセスしたときにディスパッチされるキャッシュサーバであるため、第1のキャッシュサーバは、除去される予定のオブジェクトをキャッシュしている(第1のキャッシュサーバが動作ステータスにあると仮定して、オブジェクトは、ユーザによってアクセスされており、かつオブジェクトの満了期間をまだ超えていない)。
【0025】
204で、本方法は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するかを決定する。
【0026】
205で、本方法は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するという決定に応答して、オブジェクトを現在のキャッシュサーバから除去する。
【0027】
動作期間は、キャッシュサーバが動作ステータスにある間の継続期間を指す。見つけられた第1のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するとき、URLを除去する動作が、見つけられた第1のキャッシュサーバのみにおいて実行される必要がある。これは、このキャッシュサーバが現在動作しており、オブジェクトにアクセスする全ての要求がこのキャッシュサーバに送信されたためである。オブジェクトが他のキャッシュサーバに存在したとしても、オブジェクトは、オブジェクトの継続期間がオブジェクトの満了期間を超えると、自動的に除去される。
【0028】
図3は、分散型キャッシュオブジェクトを除去する第2の例示的な方法を説明する流れ図を示す。この実施形態は、見つけられたキャッシュサーバの動作ステータスおよびステータス履歴に基づいてオブジェクトを除去するプロセスについて詳細に示す。
【0029】
301で、本方法は、キャッシュサーバのステータステーブルを事前に設定し、ステータステーブルにおいて、それぞれのキャッシュサーバの最後のステータス変更のタイムスタンプおよびそれぞれのキャッシュサーバの現在のステータスを記憶する。
【0030】
この例示的な実施形態は、キャッシュサーバのステータステーブルを設定する。ステータステーブルのそれぞれの入力は、キャッシュサーバの最後のステータス変更のタイムスタンプおよびキャッシュサーバの現在のステータスを記録するために使用される。キャッシュサーバの現在のステータスの継続期間を、このタイムスタンプに基づいて決定してもよい。現在のステータスは、動作ステータスまたは不動作ステータスを含んでもよい。不動作ステータスは、通常、キャッシュサーバがダウンしていることを示す。
【0031】
302で、本方法は、除去依頼を受信し、除去依頼は、オブジェクトの識別子を含む。
【0032】
303で、本方法は、識別子のハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用する。
【0033】
304で、本方法は、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけて、対応するキャッシュサーバを現在のキャッシュサーバとする。
【0034】
305で、本方法は、現在のキャッシュサーバが動作ステータスにあるかを決定する。肯定である場合、本方法は、ブロック306に進み、さもなければ、本方法は、ブロック309に進む。
【0035】
306で、本方法は、現在のキャッシュサーバの動作期間がオブジェクトの満了期間を超えるかを決定する。肯定である場合、本方法は、ブロック307に進み、さもなければ、本方法は、ブロック308に進む。
【0036】
307で、本方法は、オブジェクトを現在のキャッシュサーバから除去し、現在のプロセスを終了する。
【0037】
ステータステーブルから見つけられた現在のキャッシュサーバが、動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有する場合、URLを除去する動作が、見つけられた第1のキャッシュサーバのみにおいて実行される必要がある。これは、キャッシュサーバが現在動作しており、オブジェクトにアクセスする全ての要求がそのキャッシュサーバに送信されたためである。オブジェクトが他のキャッシュサーバに存在したとしても、オブジェクトは、オブジェクトの継続期間がオブジェクトの満了期間を超えると自動的に除去される。
【0038】
308で、本方法は、オブジェクトを現在のキャッシュサーバから除去し、現在のキャッシュサーバから次のキャッシュサーバに切り替え、次のキャッシュサーバを現在のキャッシュサーバとする。プロセスは、ブロック305に戻る。
【0039】
ステータステーブルから見つけられる現在のキャッシュサーバが、動作ステータスにあり、かつ対応するタイムスタンプに基づいて、オブジェクトの満了期間未満であるか、またはそれよりも短いと決定される動作期間を有する場合、オブジェクトは、最初にキャッシュサーバから除去される。その後、キャッシュサーバが、動作ステータスの前に不動作ステータスにあり、かつ除去される予定のオブジェクトにアクセスする要求が、現在のキャッシュサーバが不動作ステータスにあった期間中に、次のキャッシュサーバ(一貫したハッシングリング上で現在のキャッシュサーバの次である)に転送されたかもしれないことを考慮すると、次のキャッシュサーバは、そのオブジェクトをキャッシュしたかもしれず、したがって、再度対応するステータスを決定するために、それを得て、現在のキャッシュサーバとすることが必要とされる。本方法は、ブロック305に戻る。
【0040】
309で、本方法は、現在のキャッシュサーバの不動作期間が、オブジェクトの満了期間を超えるかを決定する。肯定である場合、本方法は、ブロック310に進み、さもなければ、本方法は、ブロック311に進む。
【0041】
310で、本方法は、現在のキャッシュサーバから次のキャッシュサーバに切り替え、次のキャッシュサーバを現在のキャッシュサーバとする。本方法は、ブロック305に戻る。
【0042】
テーブルから見つけられる現在のキャッシュサーバステータスが、不動作ステータスにあり、かつ対応するタイムスタンプに基づいて、オブジェクトの満了期間を超えると決定される不動作期間を有する場合、除去される予定のオブジェクトにアクセスする要求は、現在のキャッシュサーバが不動作ステータスにあった期間中に、次のキャッシュサーバ(一貫したハッシングリング上で現在のキャッシュサーバの次である)に転送されたかもしれず、次のキャッシュサーバは、そのオブジェクトをキャッシュしたかもしれない。したがって、再度対応するステータスを決定するために、次のキャッシュサーバを得て、現在のキャッシュサーバとすることが必要とされる。本方法は、ブロック305に戻る。
【0043】
オブジェクトの満了期間を超える不動作期間を有するキャッシュサーバについて、キャッシュサーバは、オブジェクトの満了期間を超えたため、キャッシュサーバが動作ステータスに戻った後、オブジェクトの除去動作を自動的に実行する。
【0044】
311で、本方法は、オブジェクトの識別子を記録し、現在のキャッシュサーバから次のキャッシュサーバに切り替え、次のキャッシュサーバを現在のキャッシュサーバとする。本方法は、ブロック305に戻る。
【0045】
ステータステーブルから見つけられる現在のキャッシュサーバが、不動作ステータスにあり、かつ対応するタイムスタンプに基づいて、オブジェクトの満了期間未満であると決定される不動作期間を有する場合、除去される予定のオブジェクトにアクセスする要求は、現在のキャッシュサーバが不動作ステータスにあった期間中に、次のキャッシュサーバ(一貫したハッシングリング上で現在のキャッシュサーバの次である)に転送されたかもしれず、次のキャッシュサーバは、オブジェクトをキャッシュしたかもしれない。したがって、再度対応するステータスを決定するために、次のキャッシュサーバを得て、現在のキャッシュサーバとすることが必要とされる。本方法は、ブロック305に戻る。
【0046】
オブジェクトの満了期間未満の不動作期間を有するキャッシュサーバについて、キャッシュサーバは、キャッシュサーバがオブジェクトの満了期間の前に動作ステータスに戻れば、キャッシュサーバが記録された識別子に基づいてオブジェクトを除去してもよいように、除去される予定のオブジェクトの識別子を記録する必要がある。
【0047】
図4は、分散型キャッシングオブジェクトを除去する例示的な方法を実施するシステム構造を説明する略図を示す。システム構造は、ソースデータサーバ、N数のキャッシュサーバ(Nは、正の整数である)、ディスパッチャ、およびパージエージェントを含む。ソースデータサーバ、キャッシュサーバ、およびディスパッチャが、分散型キャッシュシステムにおいてデータを記憶および回収する既存の手法を実施する間、パージエージェントは、本実施形態において分散型キャッシングオブジェクトの除去を実施するために追加されるサーバである。
【0048】
ディスパッチャ(ロードバランサ「haproxy」としても既知である)は、ユーザからオブジェクトにアクセスする要求を受信し、一貫したハッシングアルゴリズムに基づいて、要求をあるキャッシュサーバにディスパッチする。ディスパッチプロセスが既存の技術と同一であるとして、ディスパッチプロセスは、本明細書において重複して記載されない。
【0049】
キャッシュサーバ(オープンソースキャッシュサービスプログラム「squid」を関連サーバ上にロードすることによって実装することができる)は、ディスパッチされる要求をディスパッチャから受信し、(ユーザがアクセスすることを望む)オブジェクトをディスパッチャから戻すか、または(ユーザがアクセスすることを望む)オブジェクトをソースデータサーバから得て、オブジェクトをソースデータサーバから戻す。
【0050】
パージエージェントは、例示的なシステム構造に追加されるサーバであり、ディスパッチャの同一の一貫したハッシングアルゴリズムを使用して、キャッシングオブジェクトの除去を実施する。パージエージェントは、独立したサーバであってもよいか、または除去機能を実行するあるキャッシュサーバ内に組み込まれてもよい。パージエージェントは、本システムにおいて、全てのキャッシュサーバと連通してもよい。システムからオブジェクトを除去する要求は、パージエージェントに送信される。例えば、悪意のある画像が検出され、除去される必要がある場合、または製品がもはや販売されていないため、製品の画像が除去される必要がある場合、除去される予定のオブジェクトの識別子を含む除去依頼(例えば、悪意のある画像のリンクアドレス)は、パージエージェントに送信される。パージエージェントは、全てのキャッシュサーバのステータス情報を含むステータステーブルをさらに維持してもよい。ステータステーブルは、それぞれのキャッシュサーバの2つの情報を記録する。一方の情報は、キャッシュサーバの最後のステータス変更のタイムスタンプであり(タイムスタンプに基づいて、キャッシュサーバの最後のステータス変更が生じた以降の継続期間を計算することができる)、他方の情報は、キャッシュサーバの現在のステータスである。現在のステータスを使用して、キャッシュサーバが現在動作しているか、またはダウンしているかを決定することができる。
【0051】
url_aを除去される予定のオブジェクトの識別子にする。この実施形態の除去プロセスは、
図1に示される一貫したハッシングリングを参照して説明される。url_aは、ネットワークリソースを表し、通常、オブジェクトのリンクアドレスである。url_aの除去を決定すると、オブジェクトは、最初にソースデータサーバから除去され、キャッシュサーバに存在するurl_aが続いて除去される。一貫したハッシングをurl_aに適用すると、url_aにアクセスするために、最初に一貫したハッシングリングのキャッシュサーバ1にマッピングする決断が下され、ステータステーブルが照合される。対応するプロセスが、
図5に示される。
【0052】
501で、本プロセスは、url_aを含む除去依頼を受信する。
【0053】
502で、本プロセスは、キャッシュサーバ1が、url_aにアクセスするために、一貫したハッシングに基づいてディスパッチされる必要があることを決定する。
【0054】
503で、本プロセスは、現在ディスパッチされたキャッシュサーバが動作ステータスにあり、かつオブジェクトurl_aの満了期間を超える動作期間を有するかを決定する。肯定である場合、本プロセスは、ブロック504に進み、さもなければ、本プロセスは、ブロック505に進む。
【0055】
504で、本プロセスは、オブジェクトurl_aを現在ディスパッチされたキャッシュサーバから除去し、現在のプロセスを終了する。
【0056】
見つけられたキャッシュサーバ1の現在のステータスが「動作中」であり、かつキャッシュサーバ1の動作期間が、そのタイムスタンプに基づいて、url_aの満了期間を超えると決定される場合、url_aにアクセスする全ての要求は、キャッシュサーバ1がダウンしているか否かにかかわらず、キャッシュサーバ1が現在動作しているため、キャッシュサーバ1に送信されている。さらに、url_aが他のキャッシュサーバに存在したとしても、url_aは、その存在期間がurl_aの満了期間を超えると自動的に除去される。したがって、url_aを除去する動作は、キャッシュサーバ1のみで実行される必要がある。
【0057】
505で、本プロセスは、現在ディスパッチされたキャッシュサーバが依然としてダウンしているかを決定する。肯定である場合、本プロセスは、ブロック506に進み、さもなければ、本プロセスは、ブロック508に進む。
【0058】
506で、本プロセスは、現在ダウンしているキャッシュサーバのダウン持続期間が、オブジェクトurl_aの満了期間を超えるかを決定する。肯定である場合、本プロセスは、ブロック509に進み、さもなければ、本プロセスは、ブロック507に進む。
【0059】
見つけられたキャッシュサーバ1の現在のステータスが「ダウン」しており、かつそのダウン持続期間が、そのタイムスタンプに基づいて、オブジェクトurl_aの満了期間を超えると決定される場合、オブジェクトurl_aのアクセスは、キャッシュサーバ1がダウンしていた期間中に、キャッシュサーバ2〜4のうちのいずれか1つに切り替えられたかもしれない。したがって、順序的に次のキャッシュサーバを得る必要があり、ブロック503から開始するブロックは、そのキャッシュサーバにおいて繰り返される。キャッシュサーバ1について、いったんキャッシュサーバ1が動作ステータスに戻ると、オブジェクトurl_aの満了期間が過ぎているので、キャッシュサーバ1は、オブジェクトurl_aの除去動作を自動的に実行する。
【0060】
507で、本プロセスは、現在のキャッシュサーバおよびオブジェクトurl_aを記憶する。本プロセスは、ブロック509に続く。
【0061】
見つけられたキャッシュサーバ1の現在のステータスが「ダウン」しており、かつそのダウン持続期間が、そのタイムスタンプに基づいて、オブジェクトurl_aの満了期間未満であると決定される場合、オブジェクトurl_aのアクセスは、キャッシュサーバ1がダウンしていた期間中に、キャッシュサーバ2〜4のうちのいずれか1つに切り替えられたかもしれない。したがって、順序的に次のキャッシュサーバを得る必要があり、ブロック503から開始するブロックは、そのキャッシュサーバにおいて繰り返される。キャッシュサーバ1のダウン持続期間がオブジェクトurl_aの満了期間未満であるため、オブジェクトurl_aは、キャッシュサーバ1が、オブジェクトurl_aの満了期間の前に動作ステータスに戻る場合、キャッシュサーバ1が、この記録に基づいてオブジェクトurl_aを除去するように記録される必要がある。
【0062】
現在のキャッシュサーバ1とオブジェクトurl_aとの間の関係を、据え置き除去リストに記憶してもよい。キャッシュサーバ1が、オブジェクトurl_aの満了期間の前に動作ステータスに戻る場合、オブジェクトurl_aを、据え置き除去リストに記録された入力に基づいてキャッシュサーバ1から除去してもよい。
【0063】
508で、本プロセスは、オブジェクトurl_aを現在のキャッシュサーバから除去する。見つけられたキャッシュサーバ1の現在のステータスが「動作中」であり、かつその動作期間が、対応するタイムスタンプに基づいて、オブジェクトurl_aの満了期間未満であると決定される場合、url_aは、最初にキャッシュサーバ1から除去される。その後、キャッシュサーバ1が、「動作」ステータスの前に「ダウン」ステータスにあり、かつurl_aにアクセスする要求が、キャッシュサーバ1が「ダウン」ステータスにあった期間中に、キャッシュサーバ2〜4のうちのいずれか1つに切り替えられたかもしれないことを考慮すると、次のキャッシュサーバを得る必要があり、ブロック503から開始するブロックが、そのキャッシュサーバにおいて繰り返される。
【0064】
509で、本プロセスは、次のキャッシュサーバを現在のキャッシュサーバからマッピングすることができるかを決定する。肯定である場合、本プロセスは、ブロック510に進み、さもなければ、本プロセスは終了する。
【0065】
510で、本プロセスは、現在のキャッシュサーバから順序的に次のキャッシュサーバにマッピングし、ブロック503に戻る。
【0066】
見られるように、例示的なパージエージェントは、ディスパッチャの同一の一貫したハッシングアルゴリズムを使用し、キャッシュサーバのステータス変更情報の助けを借りて、除去される予定のオブジェクトが存在するキャッシュサーバを正確に見つける。除去動作が全てのキャッシュサーバにおいて実行されることを必要とせず、オブジェクトを正確かつ完全に除去することができるため、この実施形態は、既存の技術と比較して、システムの全てのキャッシュサーバにおける除去動作の実行によって占有されるシステムリソースの量を減少させる。
【0067】
図6を参照して、例示的な実施形態のある実装例が、悪意のある画像を分散型画像キャッシュシステムから除去する例を使用して説明される。
【0068】
分散型キャッシュシステムに、それぞれ、3つのキャッシュサーバ、S1、S2、およびS3を含ませる。それぞれのキャッシュサーバは、それぞれの識別子の役割を果たすそれぞれのIPアドレスによって識別される。指定されたハッシュ機能、ハッシュ_機能_xが適用されて、S1、S2、およびS3のIPアドレスを別々にハッシュする。そのようにして得られたそれぞれのハッシュ値が、3つの整数、すなわち、1000、2000、および3000である場合、これらの3つのキャッシュサーバは、
図6に示される位置でリング上にマッピングされる。これらの3つのキャッシュサーバの最初のステータスを示すステータステーブルを表1とし、その中で、最後_スタンプは、キャッシュサーバの最後のステータス変更が生じるときのタイムスタンプを表し、現在_ステータスは、キャッシュサーバの現在のステータスを表す。
【0070】
表1において、S1、S2、およびS3のそれぞれの最後_スタンプは、最初は「0」であり、S1、S2、およびS3のタイムスタンプが、最初は全てゼロであることを示す。タイムスタンプを「日」単位で記録してもよい。例えば、最初のスタートアップは、1日目に生じ、タイムスタンプは「0」である。タイムスタンプの値は、1日1つずつインクリメントする。現在_ステータスが「アップ」とは、S1、S2、およびS3が、最初は動作ステータスにあることを示す。現在_ステータスが「ダウン」とは、関連サーバがダウンしていることを示す。
【0071】
ユーザは、例えば、タイム1で、オブジェクトリソースurl_1にアクセスすることを望み得る。ハッシュ機能、ハッシュ_機能_xをurl_aに適用して、253のハッシュ値を得ると、ハッシュ値は、
図6に示されるようにリング上にマッピングされる。253のハッシュ値がマッピングされた位置から開始して、時計回り方向に検索することによって、見つけられる第1のキャッシュサーバは、S1である。したがって、オブジェクトリソースurl_1にアクセスする要求は、S1によって処理される。ユーザがS1を介して初めてurl_1にアクセスする場合、S1は、オブジェクトリソースurl_1をソースデータサーバから得て、url_1を記憶し、url_1をユーザに戻す。
【0072】
S1が、タイム2でダウンしている場合、テーブルキャッシュサーバのステータスは、表2に示されるようにアップデートされる。
【0074】
表2において、S1の現在_ステータスが「ダウン」とは、S1の最後のステータス変更後のステータスが「ダウン」している、すなわち、S1は、現在「ダウン」ステータスにあることを示す。最後_スタンプが「0」から「2」に変化し、S1が「ダウン」した状態になるとき、タイムスタンプが「2」であることを示す。「ダウン」ステータスのS1の継続期間は、現在のタイムスタンプとタイムスタンプ「2」との間の差である。
【0075】
ユーザが、タイム3で、再度オブジェクトリソースurl_1にアクセスすることを望むことを想定する。url_1の253のハッシュ値は、ハッシュ機能、ハッシュ_機能_xを適用することによって得られる。253のハッシュ値がマッピングされた位置から開始して、時計回り方向に検索することによって、見つけられる第1のキャッシュサーバは、S1である。ステータステーブル(表2)から、S1がダウンしていることが認められるため、リング上の次のキャッシュサーバ、S2(現在動作ステータスにある)が、S1から開始して時計回り方向に検索することによって得られる。したがって、オブジェクトリソースurl_1にアクセスする要求は、S2によって処理される。そのとき、オブジェクトリソースurl_1は、S1およびS2の両方においてキャッシュされる。
【0076】
オブジェクトリソースurl_1をタイム4で悪意のある画像として検出させる。したがって、url_1を分散型キャッシュシステムから除去することが必要とされる。システム管理者は、標準のHTTP Postメソッドを使用して、除去依頼をパージエージェントに送信してもよい。除去依頼は、除去される予定の標的としてurl_1を含む。
【0077】
除去依頼の受信に応答して、パージエージェントは、除去される予定の標的であるurl_1を読み取り、ハッシュ機能、ハッシュ_機能_xを介して、url_1のハッシュ値を253として得る。パージエージェントは、
図6に示されるように、リング上で253のハッシュ値がマッピングし、253のハッシュ値がマッピングされる位置から開始して、第1のキャッシュサーバを見つける。パージエージェントは、ステータステーブルをさらに調査し、S1がタイム2以降ダウンしていたことを見出し、したがって、そのときにS1に記憶されるurl_1を除去することができない。パージエージェントは、S1および対応するurl_1を据え置き除去リストに追加し、S1が再開されてurl_1を除去するまで待つ。パージエージェントは、その後、リングに沿ってS1から時計回り方向に検索を開始することによってS2を見つける。パージエージェントは、ステータステーブルをさらに調査し、S2が現在動作ステータスにあることを見出す。したがって、パージエージェントは、除去依頼に基づいて、その中で記憶される悪意のある画像(すなわち、url_1)を見つけて除去するS2に除去依頼を送信する。S2が過去にダウンしていないため、除去動作は完了する。
【0078】
分散型キャッシングオブジェクトを除去する例示的な方法に対応して、本開示は、分散型キャッシングオブジェクトを除去する例示的なシステムおよびサーバをさらに提供する。
【0079】
図7は、分散型キャッシングオブジェクトを除去する例示的なシステムを説明するブロック図を示す。
【0080】
システムは、複数のキャッシュサーバ701および除去サーバ702を含む。複数のキャッシュサーバ701は、ユーザによってアクセスされるオブジェクトをキャッシュするように構成される。除去サーバ702は、除去依頼を受信するように構成される。除去依頼は、オブジェクトの識別子を含んでもよい。除去サーバ702をさらに、識別子のハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用するように構成してもよい。一実施形態において、除去サーバ702は、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけ、対応するキャッシュサーバを現在のキャッシュサーバにし、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するかどうかを決定してもよい。現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するという決定に応答して、除去サーバ702は、オブジェクトを現在のキャッシュサーバから除去してもよい。
【0081】
さらに、動作期間が満了期間未満であるという決定に応答して、除去サーバ702はさらに、オブジェクトを現在のキャッシュサーバから除去し、現在のキャッシュサーバから次のキャッシュサーバに順に切り替え、次のキャッシュサーバを現在のキャッシュサーバとし、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するかを決定する行為に戻るように構成される。
【0082】
除去サーバ702をさらに、現在のキャッシュサーバが不動作ステータスにある場合、現在のキャッシュサーバの動作期間がオブジェクトの満了期間を超えるかを決定し、現在のキャッシュサーバから次のキャッシュサーバに順に切り替え、不動作期間が満了期間を超える場合、次のキャッシュサーバを現在のキャッシュサーバとし、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するかを決定する行為に戻るように構成してもよい。
【0083】
除去サーバ702をさらに、不動作期間が満了期間を超えない場合、識別子を記録し、現在のキャッシュサーバから次のキャッシュサーバに切り替える行為を実行し、現在のキャッシュサーバが再開されて、動作ステータスになった後、記録された識別子に基づいてオブジェクトを除去するように構成してもよい。
【0084】
除去サーバ702をさらに、キャッシュサーバのステータステーブルを設定し、ステータステーブルにおいて、それぞれのキャッシュサーバの最後のステータス変更のタイムスタンプおよびそれぞれのキャッシュサーバの現在のステータスを記憶するように構成してもよい。タイムスタンプは、対応するキャッシュサーバが現在のステータスにある継続期間を決定するために使用される。
【0085】
図8は、第1の除去サーバ800を説明するブロック図を示す。除去サーバ800は、受信ユニット810、計算ユニット820、位置決めユニット830、決定ユニット840、および除去ユニット850を含む。
【0086】
受信ユニット810は、除去依頼を受信するように構成され、除去依頼は、オブジェクトの識別子を含む。
【0087】
計算ユニット820は、識別子のハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用するように構成される。
【0088】
位置決めユニット830は、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけ、対応するキャッシュサーバを現在のキャッシュサーバにするように構成される。
【0089】
決定ユニット840は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するかを決定するように構成される。
【0090】
除去ユニット850は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するという決定に応答して、オブジェクトを現在のキャッシュサーバから除去するように構成される。
【0091】
図9は、第2の除去サーバ900を説明するブロック図を示す。除去サーバ900は、設定ユニット910、記憶ユニット920、受信ユニット930、計算ユニット940、位置決めユニット950、決定ユニット960、除去ユニット970、切り替えユニット980、および記録ユニット950を含む。
【0092】
設定ユニット910は、キャッシュサーバのステータステーブルを設定するように構成される。
【0093】
記憶ユニット920は、ステータステーブルにおいて、それぞれのキャッシュサーバの最後のステータス変更のタイムスタンプおよびそれぞれのキャッシュサーバの現在のステータスを記憶するように構成され、タイムスタンプは、対応するキャッシュサーバが現在のステータスにある継続期間を決定するために使用される。
【0094】
受信ユニット930は、除去依頼を受信するように構成され、除去依頼は、オブジェクトの識別子を含む。
【0095】
計算ユニット940は、識別子のハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用するように構成される。
【0096】
位置決めユニット950は、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけ、対応するキャッシュサーバを現在のキャッシュサーバとするように構成される。
【0097】
決定ユニット960は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するかを決定するように構成される。
【0098】
除去ユニット970は、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトの満了期間を超える動作期間を有するという決定に応答して、オブジェクトを現在のキャッシュサーバから除去するように構成される。
【0099】
除去ユニット970はさらに、動作期間が満了期間未満であるという決定に応答して、オブジェクトを現在のキャッシュサーバから除去するように構成される。
【0100】
切り替えユニット980は、現在のキャッシュサーバから次のキャッシュサーバに切り替え、次のキャッシュサーバを現在のキャッシュサーバとし、決定ユニット960をトリガするように構成される。
【0101】
決定ユニット960はさらに、現在のキャッシュサーバが不動作ステータスにある場合、現在のキャッシュサーバの不動作期間がオブジェクトの満了期間を超えるかを決定するように構成される。
【0102】
現在のキャッシュサーバの不動作期間が満了期間を超える場合、切り替えユニット980はさらに、現在のキャッシュサーバから次のキャッシュサーバに切り替え、次のキャッシュサーバを現在のキャッシュサーバとし、決定ユニット960をトリガするように構成される。
【0103】
記録ユニット990は、不動作期間が満了期間を超えない場合、識別子を記録し、切り替えユニット980をトリガするように構成される。
【0104】
除去ユニット970はさらに、現在のキャッシュサーバが動作ステータスに戻った後、記録された識別子に基づいてオブジェクトを除去するように構成される。
【0105】
例示的な実装例の上の記述から、本開示の例示的な実施形態は、オブジェクトの識別子を含む除去依頼を受信し、識別子のハッシュ結果値を得るために、一貫したハッシングをオブジェクトの識別子に適用し、ハッシュ結果値に基づいて、対応するキャッシュサーバを見つけ、対応するキャッシュサーバを現在のキャッシュサーバにし、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するかを決定し、現在のキャッシュサーバが動作ステータスにあり、かつオブジェクトに関連した満了期間を超える動作期間を有するという決定に応答して、オブジェクトを現在のキャッシュサーバから除去する。したがって、本開示の例示的な実施形態は、全てのキャッシュサーバにおいて除去動作を実行する必要はない。代わりに、見つけられたキャッシュサーバの動作期間をオブジェクトに関連した満了期間と比較することによって、例示的な実施形態は、除去される予定のオブジェクトを含むキャッシュサーバを正確に見つけて除去動作を実行し、ひいては他のキャッシュサーバがリソースを無駄にすることを防いで除去動作を実行し、したがって、分散型キャッシュシステムの全体的な性能を向上させる。
【0106】
上述の例示的な実施形態から、当業者であれば、必須のユニバーサルハードウェアプラットフォームを有するソフトウェアを使用して、本開示の方法およびシステムを実施してもよいことを明確に理解することができる。この理解に基づいて、本開示の技術的スキームまたは既存の技術を、ソフトウェア製品の形態で実施することができ、不揮発性記憶媒体、例えば、ROM/RAM、ディスク、またはコンパクトディスク内に記憶される。ソフトウェアは、コンピュータデバイス(例えば、パーソナルコンピュータ、サーバ、またはネットワークデバイス)に対して、本開示における例示的な実施形態または例示的な実施形態のある部分に記載の方法を実行する指示を含む。
【0107】
様々な例示的な実施形態が、本開示において漸進的に説明される。例示的な実施形態の同一または類似の部分を、相互に参照することができる。それぞれの例示的な実施形態は、他の例示的な実施形態とは異なる焦点を有する。とりわけ、例示的なシステムは、それが例示的な方法と基本的に一致するため、比較的単純な様式で説明されている。その詳細を、例示的な方法の関連部分に照会することができる。
【0108】
本開示の方法およびシステムを、汎用または特殊コンピュータシステム(複数を含む)の環境または構成において使用してもよい。例として、パーソナルコンピュータ、サーバコンピュータ、手持ちデバイスまたは携帯デバイス、タブレットデバイス、多重プロセスもしくはシステム、マイクロプロセスもしくはシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、マイクロコンピュータ、マクロコンピュータ、および任意のシステムまたは上のデバイスを含む分散型コンピュータ環境が挙げられる。
【0109】
本開示の方法およびシステムを、コンピュータ実行可能指示、例えば、プログラムモジュールの一般的文脈で説明することができる。概して、プログラムモジュールは、特定の機能を実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むことができる。本開示の方法およびシステムを、機能が通信ネットワークを介して接続されるリモート処理デバイスによって実行される分散型コンピュータ環境において実践することもできる。分散型コンピュータ環境において、プログラムモジュールを、メモリ記憶デバイスを含むローカルおよび/またはリモートコンピュータ記憶媒体に設置してもよい。
【0110】
例えば、
図10は、上述のサーバ等の例示的な除去サーバ1000をより詳細に説明する。一実施形態において、サーバ1000は、1つ以上のプロセッサ1010、ネットワークインターフェース1020、メモリ1030、および入力/出力インターフェース1040を含むことができるが、それらに限定されない。
【0111】
メモリ1030は、ランダムアクセスメモリ(RAM)等の揮発性メモリおよび/または読み出し専用メモリ(ROM)もしくはフラッシュRAM等の不揮発性メモリの形態で、コンピュータ可読媒体を含んでもよい。メモリ1030は、コンピュータ可読媒体の例である。
【0112】
コンピュータ可読媒体には、コンピュータ可読指示、データ構造、プログラムモジュール、または他のデータ等の情報の記憶用の、任意の方法または技術において実装される揮発性および不揮発性、除去可能および除去不可能な媒体が含まれる。コンピュータ記憶媒体の例として、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または情報を記憶するために使用することができる、コンピュータデバイスによるアクセスのための任意の他の非伝送媒体が挙げられるが、それらに限定されない。本明細書で定義されるように、コンピュータ可読媒体は、変調データ信号および搬送波等の一過性の媒体を含まない。
【0113】
メモリ1030は、プログラムユニット1050およびプログラムデータ1060を含んでもよい。一実施形態において、プログラムユニット1050は、受信ユニット1070、計算ユニット1080、位置決めユニット1090、決定ユニット1100、および除去ユニット1110を含んでもよい。さらに、いくつかの実施形態において、プログラムユニット1050は、設定ユニット1120および記憶ユニット1130をさらに含んでもよい。さらに、または代替として、プログラムユニット1050は、切り替えユニット1140および記録ユニット1150を含んでもよい。これらのプログラムユニットについての詳細を、上に記載される前述の実施形態において見出すことができる。
【0114】
例示的な実施形態を使用して本開示を説明しているが、当業者は、本開示を、本開示の精神および範囲から逸脱することなく、多くの異なる方法で変更または修正することができることを理解するはずである。したがって、本開示が、本開示の特許請求の範囲およびそれらの同等物の範囲内に収まる全ての修正および変更を包含することが意図される。