JP2012528382A - キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理 - Google Patents

キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理 Download PDF

Info

Publication number
JP2012528382A
JP2012528382A JP2012513037A JP2012513037A JP2012528382A JP 2012528382 A JP2012528382 A JP 2012528382A JP 2012513037 A JP2012513037 A JP 2012513037A JP 2012513037 A JP2012513037 A JP 2012513037A JP 2012528382 A JP2012528382 A JP 2012528382A
Authority
JP
Japan
Prior art keywords
cache
service node
cache service
master
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012513037A
Other languages
English (en)
Other versions
JP5714571B2 (ja
JP2012528382A5 (ja
Inventor
チェン・ウェンチュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2012528382A publication Critical patent/JP2012528382A/ja
Publication of JP2012528382A5 publication Critical patent/JP2012528382A5/ja
Application granted granted Critical
Publication of JP5714571B2 publication Critical patent/JP5714571B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

キャッシュデータを処理することは、複数のキャッシュサービス・ノードを含むキャッシュクラスタ内のマスタ・キャッシュサービス・ノードに、キャッシュ処理要求を送信することを含んでいる。そのキャッシュクラスタは、複数のキャッシュサービス・ノードのすべてが稼働状態にあって、マスタ・キャッシュサービス・ノードが複数のキャッシュサービス・ノードの中から選択されるアクティブ・クラスタ構成モードか、あるいは、複数のキャッシュサービス・ノードの中で唯一稼働状態にあるノードがマスタ・キャッシュサービス・ノードであるスタンバイ・クラスタ構成モードに構成可能である。キャッシュデータの処理は、さらに、マスタ・キャッシュサービス・ノードからの応答を待つこと、マスタ・キャッシュサービス・ノードに障害が発生したか否か判断すること、および、マスタ・キャッシュサービス・ノードに障害が発生した場合にバックアップ・キャッシュサービス・ノードを選択することを含んでいる。
【選択図】図12

Description

[他の出願の相互参照]
本出願は、全ての目的のために参照により本明細書に組み込まれる、発明の名称を“METHOD,SYSTEM AND DEVICE FOR CACHE DATA PROCESSING(キャッシュデータ処理の方法、システムおよびデバイス)”とする、2009年5月25日に出願された中華人民共和国特許出願番号200910143736.3に基づく優先権を主張する。
本出願は、概して、ネットワーク技術の分野に関し、より具体的には、キャッシュデータ処理に関するものである。
分散キャッシュとは、分散システムのメモリにデータを保存することである。キャッシュするコンテンツを物理的に分離されたキャッシュサービス・ノードに分散させることで、イベント駆動型アプリケーションにおいて、高い可用性、高いパフォーマンス、およびスケーラビリティを実現することができる。イベント駆動型サードパーティ・アプリケーションは、出力イベントをいくつかの分散キャッシュに分散させることができ、これにより、結果の高可用性を確保することができる。多くのイベント駆動型サードパーティ・アプリケーションは、ストリームデータを、永続記憶装置から取得したデータなどの外部データと結合する必要がある。キャッシングを利用することで、非ストリームデータへのアクセス速度を向上させることができ、ひいてはアプリケーション全体のパフォーマンスを向上させることができる。このため、キャッシングは、インターネットベースのアプリケーションおよび大規模ウェブサイトのアーキテクチャ設計において広く用いられている。
現在の分散キャッシュには、一般的に、サーバ分散キャッシュとクライアント分散キャッシュとが含まれる。データは、所定のアルゴリズムによりキャッシュサービス・ノードに分散される。キャッシュサービス・ノードが異常動作すると、そのキャッシュサービス・ノードのすべてのデータが失われることがある。さらに、キャッシュサービス・ノードの障害によって、正常なサービスが中断されることがある。また、データは所定のアルゴリズムによりキャッシュサービス・ノードに分散されるので、ひとたびキャッシュサービス・ノードが異常動作し始めると、そのキャッシュサービス・ノードに分散される更なる要求は受け付けられなくなる。
本発明の様々な実施形態は、以下の詳細な説明および添付の図面において開示される。
典型的なサーバ分散キャッシュを示す図である。
典型的なクライアント分散キャッシュの構造図である。
キャッシュ処理方法の一実施形態を示すフローチャートである。
クラスタ内の複数のキャッシュサービス・ノードがアクティブ・クラスタ構成モードにあるときのキャッシュ要求処理プロセスの一実施形態を示すフローチャートである。
マスタ・キャッシュサービス・ノードを選択するプロセスの一実施形態を示すフローチャートである。
キャッシュサービス・ノードがスタンバイ・クラスタ構成モードに構成されているキャッシュクラスタにおけるキャッシュデータ処理プロセスの一実施形態を示すフローチャートである。
アクティブ構成モードでのキャッシュデータ処理プロセスの一実施形態において用いられるメッセージおよびステップを示すフローチャートである。
非同期処理プロセスの一実施形態を示すフローチャートである。
アクティブ構成モードでのキャッシュデータ処理プロセスの一実施形態において用いられるメッセージおよびステップを示すフローチャートである。
障害タグが付けられたキャッシュサービス・ノードについてハートビート検出を実行するプロセスの一実施形態を示すフローチャートである。
障害タグが付けられていないキャッシュサービス・ノードについてハートビート検出を実行するプロセスの一実施形態を示すフローチャートである。
データキャッシング・システムの一実施形態を示すブロック図である。
キャッシュ・クライアントの一実施形態を示すブロック図である。
アクティブ・クラスタ構成モードにあるキャッシュ・クライアントを示すブロック図である。
スタンバイ・クラスタ構成モードにあるキャッシュ・クライアントを示すブロック図である。
容量拡張が可能なキャッシュ・ノードを示す図である。
本発明は、数多くの方法で実施することが可能であり、それには、プロセス、装置、システム、組成物、コンピュータ読み取り可能な記憶媒体上で実現されるコンピュータプログラム・プロダクトとしての実施、および/または、プロセッサに結合されたメモリに記憶された命令および/またはそれにより提供される命令を実行するように構成されたプロセッサなど、プロセッサとしての実施が含まれる。本明細書では、このような実施の形態、あるいは本発明が取り得るその他の形態を、技術と呼ぶ場合がある。一般的に、開示されるプロセスのステップの順序は、発明の範囲内で変更することができる。特に明記しない限り、タスクを実行するように構成されたものとして記載されるプロセッサまたはメモリなどのコンポーネントは、所与の時間に一時的にそのタスクを実行するように構成された汎用コンポーネント、あるいはそのタスクを実行するように作製された専用コンポーネントとして実現することができる。本明細書において用いられる場合の「プロセッサ」
という用語は、コンピュータプログラム命令などのデータを処理するように構成された1つまたは複数のデバイス、回路、および/または処理コアを指している。
本発明の1つまたは複数の実施形態についての詳細な説明が、以下で、本発明の原理を示す添付図面と共に提供される。本発明は、それらの実施形態に関連させて説明されるが、本発明は、いずれの実施形態にも限定されるものではない。本発明の範囲は、請求項によってのみ限定されるものであり、本発明は、多くの代替案、変形、および均等物を包含している。発明についての完全な理解を与えるため、様々な具体的詳細が以下の説明において記載される。これらの詳細は、例示目的で提供されるものであり、本発明は、これら特定の詳細の一部または全部を省いて、請求項に基づき実施することができる。明確にする目的で、発明が不必要に不明瞭になることがないよう、本発明に関連する技術分野で知られている技術的事項については詳細に記載していない。
図1は、典型的なサーバ分散キャッシュを示す図である。このシステムは、キャッシュ・クライアント、キャッシュ・ノードA、キャッシュ・ノードB、およびキャッシュ・ノードCを含んでいる。分散オペレーションは、キャッシュ・ノードBでサーバにより実行される。ノード間で通信プロトコルを実行するために、JGroupsによるマルチキャスト通信がしばしば用いられ、オペレーションおよびデータ同期は、通常、3段階のビジネスプロトコルにより実行される。この種の代表的なシステムは、JBoss CacheおよびEhCacheを含んでいる。マルチキャスト通信は信頼性が低く、また、3段階のビジネスプロトコルは非常に複雑であるため、このような設定は、効率が低く、頻度および同時性の高い要求を処理しなければならないシステムには一般的に適さない。
図2は、典型的なクライアント分散キャッシュの構造図である。このシステムは、キャッシュ・クライアント、キャッシュ・ノードA、キャッシュ・ノードB、およびキャッシュ・ノードCを含んでいる。キャッシュ・サーバは、分散型キャッシュである。異なるクライアントには異なるキーを配布することができ、これにより、拡張可能なクライアント分散キャッシュシステムを形成している。この種の代表的なシステムは、Memcachedシステムを含んでいる。この種のシステムは、拡張性に優れ、高効率であるが、フォールトトレラント機構を欠いている。データキャッシュサービス・ノードの一部に障害が発生すると、システムは、ビジネスシステムの正常な利用に影響するいくらかのデータを失う。Sina Networkにより開発されたオープンソースのMemcachedデータベースは、データをメモリデータベースまたはローカルハードディスクに保存することにより、データの完全性を保証するが、しかしながら、要求の同時性が高い環境では、フォールトトレランスあるいは負荷分散を高度に実現することができない。
以下で説明する実施形態では、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗した場合、キャッシュ・クライアントが、そのマスタ・キャッシュサービス・ノードに障害タグを付けて、バックアップ・キャッシュサービス・ノードを選択し、そのバックアップ・キャッシュサービス・ノードにオペレーション要求を送る。本願は、クラスタ内に複数のキャッシュサービス・ノードを含むネットワークにおいて適用されるキャッシュデータ処理の方法を提供し、キャッシュサービス・ノードの障害の結果としてキャッシュサービス・ノードが利用不可能になるという問題およびデータ損失の問題を解決する。
図12は、データキャッシング・システムの一実施形態を示すブロック図である。このシステムは、キャッシュ・クライアント1201、マスタ・キャッシュサービス・ノード1202、および1つまたは複数のバックアップ・キャッシュサービス・ノード1203を含んでいる。キャッシュ・クライアントは、コンピュータ、スマートフォンなどのモバイル機器、あるいは、ネットワークを介してマスタ・キャッシュサービス・ノード1202にオペレーション要求を送信し、マスタ・キャッシュサービス・ノード1202からオペレーション要求の結果を受信するように構成された他の適当なデバイスとして実現することができる。その結果が、マスタ・キャッシュサービス・ノード1202から受信したオペレーション要求が失敗したことを示している場合、あるいは要求がタイムアウトした場合、キャッシュ・クライアントは、バックアップ・キャッシュサービス・ノード1203を選択して、そのバックアップ・キャッシュサービス・ノード1203にオペレーション要求をリダイレクトするように構成されている。マスタ・キャッシュサービス・ノード1202は、キャッシュ・クライアント1201により送信されるキャッシュデータ処理要求を受信して、オペレーション結果をキャッシュ・クライアント1201にリターンするように構成されている。バックアップ・キャッシュサービス・ノード1203は、マスタ・キャッシュサービス・ノード1202に障害が発生した場合に、キャッシュ・クライアント1201により送信されるキャッシュデータ処理要求を受信する。
マスタ・キャッシュサービス・ノードとバックアップ・キャッシュサービス・ノードは、アクティブ・クラスタ構成モードあるいはスタンバイ・クラスタ構成モードに構成することができる。アクティブ・クラスタ構成モードでは、クラスタ内の複数のキャッシュサービス・ノードが稼働状態にあり、要求の処理が必要となるたびにマスタ・キャッシュサービス・ノードが選択される。1つのキャッシュサービス・ノードに障害が発生すると、他のキャッシュサービス・ノードで要求を共有する。スタンバイ・クラスタ構成モードでは、クラスタ内の複数のキャッシュサービス・ノードのうち、1つのみがマスタ・キャッシュサービス・ノードとして機能し、稼働状態にあるキャッシュサービス・ノードである。他のキャッシュサービス・ノードは、バックアップ状態にある。マスタ・キャッシュサービス・ノードに障害が発生すると、他のキャッシュサービス・ノードの1つがマスタ・キャッシュサービス・ノードに代わって新しいマスタ・キャッシュサービス・ノードとなって、要求を処理する。また、キャッシュサービス・ノードは、クラスタ内のキャッシュサービス・ノードの容量が不足しているときに動的にノードの容量を拡張できるように、仮想化されている。
図3は、キャッシュ処理方法の一実施形態を示すフローチャートである。このプロセス300は、図12の1200のようなキャッシュ処理システムにおいて実行することができる。ステップ302において、キャッシュ・クライアントが、マスタ・キャッシュサービス・ノードにキャッシュ処理要求を送信する。ステップ304において、キャッシュ・クライアントは、マスタ・キャッシュサービス・ノードからの応答(すなわち、キャッシュ処理要求の結果)を待つ。ステップ306において、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗したか否か判断される。受信した応答がエラーコード、不正確なチェックサムなどを含んでいる場合、あるいは応答がタイムアウトになった場合は、マスタ・キャッシュサービス・ノードは障害が発生したと判断される。この場合、ステップ308において、キャッシュ・クライアントにより、バックアップ・キャッシュサービス・ノードが新しいマスタ・キャッシュサービス・ノードとして選択されて、その後のキャッシュ処理要求は、そのバックアップ・キャッシュサービス・ノードへ送信される。そうでない場合は、その後のキャッシュ処理要求は、引き続き同じマスタ・キャッシュサービス・ノード宛てに送られる。
一部の実施形態では、クラスタ構成モードに、アクティブ・クラスタ構成モードとスタンバイ・クラスタ構成モードとが含まれる。アクティブ・クラスタ構成モードでは、クラスタ内の複数のキャッシュサービス・ノードが稼働状態にあり、それらが共同で要求を処理し、マスタ・キャッシュサービス・ノードは必ずしも1つだけではない。1つのキャッシュサービス・ノードに障害が発生すると、その他のキャッシュサービス・ノードで、引き続き要求の処理を共有する。要求が処理されるときには、クラスタ内のノードのデータ同期化が実行される。スタンバイ・クラスタ構成モードでは、クラスタ内の複数のキャッシュサービス・ノードのうち1つのキャッシュサービス・ノードのみが稼働状態にあって、マスタ・キャッシュサービス・ノードとして機能しており、他のキャッシュサービス・ノードは、すべてバックアップ状態にある。マスタ・キャッシュサービス・ノードに障害が発生すると、バックアップ・キャッシュサービス・ノードの1つが、新しいマスタ・サービス・ノードとして選択されて、これが、キャッシュ処理要求を受信して処理し、クラスタ内のノードのデータ同期化を定期的に実行する。アクティブ・クラスタ構成モードおよびスタンバイ・クラスタ構成モードによって、ネットワーク全体の自動障害リカバリが可能となり、また、キャッシュ・クライアントによる無中断のデータアクセスが確保される。
図4は、クラスタ内の複数のキャッシュサービス・ノードがアクティブ・クラスタ構成モードにあるときのキャッシュ要求処理プロセスの一実施形態を示すフローチャートである。このプロセスは、キャッシュ・クライアントにおいて実行することができる。
ステップ402において、キャッシュ・クライアントは、アルゴリズムにより、あるいはクライアントの構成に応じて、クラスタ内の複数のキャッシュサービス・ノードからマスタ・キャッシュサービス・ノードを選択する。クラスタ内のキャッシュサービス・ノードに障害が発生した場合、その障害が発生したノードは、障害状態を保持する。この情報は、他のキャッシュサービス・ノードにブロードキャストされるか、あるいはネットワーク上の指定の記憶場所に保存されるものとすることができる。キャッシュ・クライアントは、キャッシュサービス・ノードに問合せすることにより、あるいは指定の場所から情報を取り出すことにより、障害状態のタグが付けられたキャッシュサービス・ノードを得る。一部の実施形態では、キャッシュ・クライアントは、さらに、ネットワーク上の利用可能なキャッシュサービス・ノードを得る。キャッシュ・クライアントは、利用可能なキャッシュサービス・ノードから1つのキャッシュサービス・ノードを、新しいマスタ・キャッシュサービス・ノードとして選択する。選択方法の例には、動的負荷分散選択、ハッシュ法、またはコンシステント・ハッシュ法が含まれる。
マスタ・キャッシュサービス・ノードを選択した後に、ステップ404で、キャッシュ・クライアントは、キャッシュデータ処理要求をマスタ・キャッシュサービス・ノードに送信する。
ステップ406において、キャッシュ・クライアントは、マスタ・キャッシュサービス・ノードからの応答を待つ。ステップ408において、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗したか否か判断される。要求が正常に処理されたことを応答が示している場合、その後のキャッシュ処理要求は、ステップ404において、引き続き同じマスタ・キャッシュサービス・ノード宛てに送られる。
受信した応答がエラーコード、不正確なチェックサムなどを含んでいる場合、あるいは応答がタイムアウトした場合は、マスタ・キャッシュサービス・ノードは障害が発生したと判断される。一部の実施形態では、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗すると、キャッシュ・クライアントは、マスタ・キャッシュサービス・ノードに関連する失敗オペレーション回数をインクリメントする。失敗オペレーション回数は所定の閾値と比較される。失敗オペレーション回数が閾値を超えている場合、マスタ・キャッシュサービス・ノードは、障害状態のマークが付けられる。一部の実施形態では、障害が発生したノードに対して障害期間が設定され、この間は、その障害ノードを利用できないが、リセットまたはリカバリにより再び利用可能になる機会があるとされる。
マスタ・キャッシュサービス・ノードに障害が発生した場合、ステップ410において、キャッシュ・クライアントは、アルゴリズムにより、あるいは構成に応じて、バックアップ・キャッシュサービス・ノードを新しいマスタ・キャッシュサービス・ノードとして選択し、その後のキャッシュ処理要求は、そのバックアップ・キャッシュサービス・ノードに送信する。
一部の実施形態では、キャッシュ・クライアントは、実行されるべきタスクを保持するクラスタ・オペレーション・タスク・キューと、クラスタのキャッシュサービス・ノードにオペレーションを実行させるために用いられるスレッドを管理するタスク実行スレッド・プールとを用いて、非同期処理を実現する。要求オペレーションに成功すると、キャッシュ・クライアントは、オペレーション結果をキャッシュし、そのオペレーションとオペレーション結果をクラスタ・オペレーション・タスク・キューに保存する。タスク実行スレッド・プールは、マスタ・キャッシュサービス・ノードへの要求の送信およびそこからの応答の受信に用いられるスレッドを管理し、また、他のキャッシュサービス・ノードによりオペレーションが処理されることがないようにしている。
アクティブ・クラスタ構成モードでは、マスタ・キャッシュサービス・ノードに障害が発生すると、その障害が発生したマスタ・キャッシュサービス・ノードの代わりとなるバックアップ・キャッシュサービス・ノードが選択される。障害が発生したマスタ・キャッシュサービス・ノードが回復すると、クラスタ・オペレーション・タスク・キューは、バックアップ・キャッシュサービス・ノードにより実行されたオペレーションおよびそのオペレーション結果を、マスタ・キャッシュサービス・ノードにリターンする、あるいはコピーする。一方、マスタ・キャッシュサービス・ノードは再び稼働状態となって、バックアップ・キャッシュサービス・ノードは、もはや代理のマスタ・キャッシュサービス・ノードとして機能しなくなる。この非同期処理は、さらに、マスタ・サービス・ノードに障害が発生していない場合に、マスタ・キャッシュサービス・ノードにより実行されたオペレーションを他のすべてのキャッシュサービス・ノードで更新するために用いられる。つまり、アクティブ・クラスタ構成モードでは、オペレーションが進行すると、マスタ・キャッシュサービス・ノードまたはバックアップ・キャッシュサービス・ノードのどちらかが、そのオペレーションおよびオペレーション結果をクラスタ・オペレーション・タスク・キューに保存し、クラスタ内の他のすべてのキャッシュサービス・ノードのデータ非同期処理の実行を待つ。これによって、クラスタ内のすべてのキャッシュサービス・ノードのデータ整合性が確保される。
オペレーション結果に基づきオペレーションが失敗したと判断される場合は、キャッシュ・クライアントは、そのバックアップ・キャッシュサービス・ノードを障害インジケータでマークして、バックアップ・キャッシュサービス・ノードを再選択する。
一部の実施形態では、ステップ402において、マスタ・キャッシュサービス・ノードは、動的負荷分散選択法を用いて選択される。図5は、マスタ・キャッシュサービス・ノードを選択するプロセスの一実施形態を示すフローチャートである。このプロセスは、キャッシュ・クライアントにより実行することができる。
ステップ502において、キャッシュ・クライアントは、キャッシュサービス・ノードに問合せすることにより、利用可能キャッシュサービス・ノードのパラメータを取得する。これらのパラメータには、キャッシュサービス・ノードの処理能力指標W[i]、キャッシュサービス・ノードの現在の総キャッシュデータ量C[i]、およびキャッシュサービス・ノードの要求応答時間R[i]が含まれる。
ステップ504においては、取得した利用可能キャッシュサービス・ノードのパラメータが、昇順または降順にソートされる。例えば、F(K[i],{K[1] ...K[N]}, ASC)は、配列{K[1] ...K[N]}が昇順にまずソートされて、その結果K[i]の添字の位置に返されることを示している。同様に、F(K[i],{K[1] ...K[N]}, DESC)は、配列{K[1] ...K[N]}が降順にまずソートされて、その結果K[i]の添字の位置に返されることを示している。
ステップ506においてパラメータ式が計算される。一部の実施形態では、キャッシュサービス・ノードを選択するための加重計算式は次のようなものである。
Max(F(W[i],{W[1] ...W[N]}, ASC)*25%+F(C[i],{C[1] ...C[N]}, DESC)*25%+F(R[i],{R[1] ...R[N]},DESC)*50%)。
上記の式によると、処理能力について、その処理能力ができる限り大きくあるべきであるということが25%、総キャッシュコンテンツ量について、その総キャッシュコンテンツ量ができる限り少なくあるべきであるということが25%、そして応答時間について、その応答時間ができる限り短くあるべきであるということが50%を占める。
ステップ508において、計算結果に基づきマスタ・キャッシュサービス・ノードが選択される。ステップ506において示した式が用いられる例では、最大値をもつキャッシュサービス・ノードが選択される。
図6は、キャッシュサービス・ノードがスタンバイ・クラスタ構成モードに構成されているキャッシュクラスタにおけるキャッシュデータ処理プロセスの一実施形態を示すフローチャートである。このプロセス600は、クライアントがマスタ・キャッシュサービスを選択する必要がないことを除けば、プロセス400に類似している。代わりに、クラスタ内のマスタ・キャッシュサービス・ノードが既に指定されている。一部の実施形態では、クラスタ内のキャッシュサービス・ノードは、障害またはリカバリを経験すると、順序リストで削除または追加される。この場合、マスタ・キャッシュサービス・ノードは、順序リストでのノードの位置に基づき指定される。つまり、キャッシュサービス・ノードは、それらのキャッシュサービス・ノードが順序列に追加された順番で配列され、順序列で最初のものがマスタ・キャッシュサービス・ノードとして指定される。マスタ・キャッシュサービス・ノードに障害が発生すると、順序列で次のキャッシュサービス・ノードが、新しく指定されるマスタ・キャッシュサービス・ノードとなり、一方、障害が発生した旧マスタ・キャッシュサービス・ノードは、順序列から削除されて、回復したら順序列の最後尾に追加される。
一部の実施形態では、データセキュリティ要件が高く、かつ、読み出し/書き込み比の高いシステムにおいて、アクティブ・クラスタ構成モードが用いられる。図7は、アクティブ構成モードでのキャッシュデータ処理プロセスの一実施形態において用いられるメッセージおよびステップを示すフローチャートである。この例では、ネットワークは、アプリケーション(多くの場合、サードパーティ・アプリケーション)、キャッシュ・クライアント、キャッシュ・ノードAおよびBを含んでいる。他の実施形態において、追加のキャッシュ・ノードを用いることができる。サードパーティ・アプリケーションがキャッシュ処理を必要とする場合、すなわち、そのサードパーティ・アプリケーションがキャッシュデータ読み出しまたはキャッシュデータ処理の要求を送信する場合に、動的負荷分散法に従ってキャッシュ・クライアントによりキャッシュデータ処理実行用に選択されたキャッシュ・ノードAに障害が発生したら、キャッシュ・クライアントは、キャッシュ・ノードBをキャッシュデータ処理実行用に選択する。キャッシュ・ノードBがキャッシュデータ処理を正常に実行すると、データ非同期処理が実行される。
図示の例では、ステップ701において、アプリケーションが、キャッシュデータ読み出しまたはキャッシュデータ処理の要求をキャッシュ・クライアントに送信する。
ステップ702において、キャッシュ・クライアントが、アプリケーションにより送信された要求を受信して、利用可能なキャッシュサービス・ノードを確認する。クラスタ内のキャッシュサービス・ノードに障害が発生した場合、その障害が発生したノードに障害タグが関連付けられて保存される。キャッシュ・クライアントは、すべてのキャッシュサービス・ノードの状態を調べて、そして、それらの障害タグに基づきキャッシュサービス・ノードが利用可能であるかどうか判断する。キャッシュ・クライアントは、障害タグ無しのキャッシュサービス・ノードが、利用可能なキャッシュサービス・ノードであることを確認する。キャッシュ・クライアントは、利用可能なキャッシュサービス・ノードが見つからないときは、サードパーティ・アプリケーションにエラー情報を送信する。キャッシュ・クライアントは、1つまたは複数の利用可能なキャッシュサービス・ノードを見つけると、図5の500と同様のプロセスを用いてマスタ・キャッシュサービス・ノードを選択することによりステップ703を実行する。
この例では、キャッシュ・クライアントは、キャッシュ・ノードAをマスタ・キャッシュサービス・ノードとして選択する。ステップ704で、キャッシュ・クライアントは、キャッシュ・ノードAにキャッシュデータ処理要求を送信する。あるいは代わりに、キャッシュ・ノードBをマスタ・キャッシュサービス・ノードとして選択することができ、以下で説明する処理ステップが同じように適用可能である。
ステップ705において、キャッシュ・ノードAは、キャッシュ・クライアントにより送信されたオペレーション要求を受信して、キャッシュデータ処理を実行する。ステップ706において、キャッシュ・ノードAは、オペレーション要求を完了すると、オペレーション結果をキャッシュ・クライアントにリターンする。
ステップ707において、キャッシュ・クライアントは、リターンされたオペレーション結果に基づき、マスタ・キャッシュサービス・ノードに障害が発生したかどうか判断する。
キャッシュ・ノード自体の障害の他に、オペレーションの失敗の原因となる他の多くの理由(たとえば、ネットワーク接続の不具合)があり得る。このため、キャッシュ・ノードAは、障害が発生したとして直ちにタグが付けられるわけではない。その代わりに、障害カウンタがキャッシュ・ノードに関連付けられて、オペレーションに失敗したと見なされるたびにカウントがインクリメントされる。障害カウンタには閾値Nが設定されている。記録された障害回数が閾値Nを超えている場合に、キャッシュ・クライアントは、障害が発生したとしてキャッシュ・ノードAの状態にタグを付ける。
ステップ709において、キャッシュ・クライアントは、アプリケーションにより送信された要求を受信し、利用可能なバックアップ・キャッシュサービス・ノードを確認する。
障害の発生したキャッシュサービス・ノードに関連付けられた障害タグは、キャッシュ・クライアントにより保持されるか、あるいはネットワーク上に保存される。キャッシュ・クライアントは、ネットワーク内で障害タグが付けられていない利用可能なキャッシュサービス・ノードを探す。キャッシュ・クライアントが利用可能なキャッシュサービス・ノードを見つけられなかった場合、キャッシュ・クライアントは、アプリケーションにエラー情報を送信する。そうではなくて、利用可能なキャッシュサービス・ノードを見つけた場合、ステップ710において、キャッシュ・クライアントは、動的負荷分散法、ハッシュ法、またはコンシステント・ハッシュ法などの適当な方法を用いて、利用可能なキャッシュサービス・ノードから1つのキャッシュサービス・ノードをバックアップ・キャッシュサービス・ノードとして選択する。
ステップ715において、マスタ・キャッシュサービス・ノードからの応答は、オペレーションが成功したことを示しており、キャッシュ・クライアントは、オペレーションおよびその結果をクラスタ・タスク・キューに保存する。そのオペレーションが取得オペレーションであって、新しいデータをキャッシュする必要がある場合には、そのデータがキャッシュされ、データに有効期間が関連付けられる。
ステップ716において、キャッシュ・クライアントは、そのオペレーションの結果をアプリケーションにリターンする。
キャッシュ・クライアントがオペレーションおよびオペレーション結果をクラスタ・オペレーション・タスク・キューに保存するステップ715の後で、非同期データリカバリおよび非同期データコピーを含む非同期処理を、タスク・キューとスレッド・プールの併用によって実現することができる。
図8は、非同期処理プロセスの一実施形態を示すフローチャートである。図示の例では、クラスタ・オペレーション・タスク・キュー、タスク・コンシューマ、およびタスク実行スレッド・プールを含むデータ構造を用いることで、キャッシュ・クライアントによる要求の処理を非同期的に進めやすくしている。
ステップ801において、キャッシュ・クライアントは、キャッシュサービス・ノードにより実行されるべきオペレーションをクラスタ・オペレーション・タスク・キューに記録する。そのオペレーションは、マスタとしてのキャッシュサービス・ノードを更新するための更新オペレーション、あるいはキャッシュデータの取得が必要である取得オペレーションとすることができる。
ステップ802において、タスク・コンシューマが、クラスタ・オペレーション・タスク・キューにメッセージを送信して、キューに新しいタスクがあるかどうか問い合わせする。もしある場合は、ステップ803において、タスク・コンシューマは、そのタスクをタスク実行スレッド・プールに送信する。タスクが送信されると、ステップ804において、クラスタ・オペレーション・タスク・キューは、そのタスクを削除する。
ステップ805において、タスク実行スレッド・プールは、タスクの順序、タスクの宛先、およびタスクの内容に基づきタスクを分析して、そのタスクを非同期的に処理するためのタスク実行スレッドを設定する。
ステップ806において、タスク実行スレッド・プールは、そのタスク実行スレッドを用いて非同期処理を実行する。そのオペレーションがキャッシュコンテンツを取得するための取得オペレーションである場合は、そのオペレーションおよび関連するデータがクラスタに送信される。そのオペレーションを指示されたキャッシュサービス・ノードのみがオペレーションを実行することができ、他のキャッシュサービス・ノードがオペレーションを実行することはできない。
そのオペレーションがキャッシュサービス・ノードの障害状態を更新するための更新オペレーションである場合、そのオペレーションおよび関連するデータがクラスタにコピーされる。そのオペレーションを指示されたキャッシュサービス・ノードのみがオペレーションを実行することができ、他のキャッシュサービス・ノードがオペレーションを実行することはできない。
ステップ807において、クラスタ・キャッシュサービス・ノードは、オペレーションの結果をタスク実行スレッド・プールに送る。
ステップ808において、タスク実行スレッド・プールは、オペレーション結果に基づいて、タスクが正常に実行されたか否か判断し、その判定結果に対処する。特に、タスクが失敗した場合には、その失敗に対処するため、いくつかの方法を実施することができる。例えば、そのタスクを単に破棄することができ、有限回の再試行をすることができ、あるいは、そのタスクを一時的に記憶して後に再試行することができる。
一部の実施形態では、データセキュリティ要件が低く、かつ信頼性の高いシステムにおいて、スタンバイ・クラスタ構成モードが適用される。このシステムは、アプリケーション、キャッシュ・クライアント、キャッシュ・ノードA、Bなどを含んでいる。マスタ・キャッシュサービス・ノードであるキャッシュ・ノードAがオペレーションの実行に失敗すると、キャッシュ・クライアントは、バックアップ・キャッシュサービス・ノードであるキャッシュ・ノードBに要求を送り、このノードがキャッシュデータ処理を実行し、それ自身でデータ同期を実行する。図9は、アクティブ構成モードでのキャッシュデータ処理プロセスの一実施形態において用いられるメッセージおよびステップを示すフローチャートである。
ステップ901において、アプリケーションが、キャッシュデータ読み出しまたはキャッシュデータ処理の要求をキャッシュ・クライアントに送信する。
ステップ902において、キャッシュ・クライアントが、アプリケーションにより送信された要求を受信して、マスタ・キャッシュサービス・ノードであるキャッシュ・ノードAの状態をローカルキャッシュで調べる。障害状態が、有効期間制限を過ぎている場合は、障害タグが取り除かれる。
マスタ・キャッシュサービス・ノードに障害が発生していない場合は903が実行され、それ以外の場合はステップ904が実行される。ステップ903では、キャッシュ・クライアントが、キャッシュデータ処理要求をキャッシュ・ノードAに送信する。ステップ904において、キャッシュ・ノードAが、キャッシュ・クライアントにより送信されたキャッシュデータ処理要求を受信し、キャッシュ・ノードAはキャッシュデータ処理を実行する。
キャッシュ・ノードAがキャッシュデータ処理を実行した後に、ステップ905において、そのオペレーション結果がキャッシュ・クライアントに返される。ステップ906において、キャッシュ・クライアントは、返されたオペレーション結果に基づき、オペレーションが成功したかどうか判断する。ステップ907で、キャッシュ・クライアントは、オペレーションの成功または失敗に対処する。例えば、そのキャッシュ・ノードに関連付けられた障害カウンタにおいて、障害回数をインクリメントして、閾値Nと比較する。カウンタの障害回数が閾値Nを超えている場合は、キャッシュ・クライアントは、キャッシュ・ノードAの状態に障害タグを付けて、その障害の有効期間を設定する。ステップ908において、キャッシュ・クライアントは、利用可能なキャッシュサービス・ノードから1つのバックアップ・キャッシュサービス・ノードを選択する。
クラスタ内のキャッシュサービス・ノードに障害が発生した場合、そのキャッシュサービス・ノードが自身の障害タグを保持する。キャッシュ・クライアントは、障害状態タグが付いていない利用可能なキャッシュサービス・ノードを識別し、1つの利用可能キャッシュサービス・ノードをバックアップ・キャッシュサービス・ノードとして選択する。キャッシュ・クライアントが、利用可能なキャッシュサービス・ノードを見つけられなかった場合、キャッシュ・クライアントは、アプリケーションにエラー情報を送信する。
この例では、Aに障害が発生した場合に、マスタキャッシュ・ノードAの代わりとしてバックアップ・キャッシュ・ノードBが選択される状況についても、図に示している。その場合、ステップ909〜914が然るべく実行される。
以前のマスタ・キャッシュサービス・ノードAが回復すると、それは、現在のマスタ・キャッシュサービス・ノードBのバックアップ・キャッシュサービス・ノードとなる。このように、キャッシュ・ノードAは、現在のバックアップ・キャッシュサービス・ノードとして機能して、非同期的データ同期処理のためのデータセット要求を現在のマスタ・キャッシュサービス・ノードBへ送信する。具体的には、ステップ914(a)において、キャッシュ・ノードAがキャッシュ・ノードBにデータセット要求を送信し、ステップ914(b)において、キャッシュ・ノードBがキャッシュ・ノードAにデータセット結果を返し、これによって、キャッシュ・ノードAとキャッシュ・ノードBの間のデータ同期化を実現することができる。
一部の実施形態では、スタンバイ・クラスタ構成モードにおいて、キャッシュ・クライアントが、クラスタ内のキャッシュサービス・ノードについて、定期的なハートビート検出を実行し、ハートビート検出の結果に基づいて、定期的にキャッシュサービス・ノードの状態を障害タグ付きまたは障害タグ無しに更新する。
キャッシュサービス・ノードに障害タグが付けられている場合、キャッシュ・クライアントは、そのキャッシュサービス・ノードについてハートビート検出を実行し、応答数が閾値を超えている場合、キャッシュ・クライアントは、そのキャッシュサービス・ノードの障害タグを取り除く。図10は、障害タグが付けられたキャッシュサービス・ノードについてハートビート検出を実行するプロセスの一実施形態を示すフローチャートである。この例では、先の障害によって、キャッシュ・ノードCに障害タグが付けられている。ステップ1002において、キャッシュ・クライアントが、ハートビート検出データをキャッシュ・ノードCに定期的に送信する。ステップ1004において、キャッシュ、クライアントは、キャッシュ・ノードCからの応答を待つ。ステップ1006において、キャッシュ・クライアントは、キャッシュ・ノードCがハートビート・データに正常に応答したかどうか判断する。不正確な応答コード、不正確なチェックサム、あるいは応答のタイムアウトは、失敗と解釈される。ステップ1008において、キャッシュ・ノードCがハートビート・データに正常に応答すると、キャッシュ・ノードCに付けられている障害タグが取り除かれる。
キャッシュ・クライアントは、さらに、障害タグが付けられていないキャッシュサービス・ノードについてもハートビート検出を実行し、障害回数を追跡する。図11は、障害タグが付けられていないキャッシュサービス・ノードについてハートビート検出を実行するプロセスの一実施形態を示すフローチャートである。この例では、キャッシュ・ノードDには、現在のところ、障害タグが付けられてはいない。ステップ1102において、キャッシュ・クライアントは、ハートビート検出データをキャッシュ・ノードDに定期的に送信する。ステップ1104において、キャッシュ、クライアントは、キャッシュ・ノードDからの応答を待つ。ステップ1106において、キャッシュ・クライアントは、キャッシュ・ノードDがハートビート・データに正常に応答したかどうか判断する。不正確な応答コード、不正確なチェックサム、あるいは応答のタイムアウトは、失敗と解釈される。応答が失敗であった場合は、ステップ1108において、キャッシュ・ノードDに関連付けられた障害カウンタがインクリメントされる。ステップ1110において、障害カウンタの値が閾値Nを超えたかどうか判断される。もしそうである場合は、キャッシュ・ノードDに障害タグが付けられる。
一部の実施形態では、1つの障害カウンタが、キャッシュサービス・ノードがハートビート検出への応答に失敗したときと、キャッシュサービス・ノードがキャッシュ要求の処理に失敗したときと、その両方に用いられる。
図13は、キャッシュ・クライアントの一実施形態を示すブロック図である。この例では、キャッシュ・クライアントは、キャッシュデータの処理が必要であるときにオペレーション要求をマスタ・キャッシュサービス・ノードに送信するために用いられる要求送信ユニット1301を含んでいる。さらに、結果受信ユニット1302を含み、これは、マスタ・キャッシュサービス・ノードにより要求送信ユニット1301に送信されるオペレーション要求のオペレーション結果を受信するために用いられるものである。さらに、キャッシュサービス・ノード選択ユニット1303を含んでいる。上記の結果受信ユニットにより受信したオペレーション結果に基づいて、上記マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗したと判断されたら、キャッシュサービス・ノード選択ユニットが、1つのバックアップ・キャッシュサービス・ノードを選択し、要求送信ユニットは、その選択されたバックアップ・キャッシュサービス・ノードにオペレーション要求を送信する。
図14は、アクティブ・クラスタ構成モードにあるキャッシュ・クライアントを示すブロック図である。この例に示すキャッシュ・クライアント1400は、キャッシュデータの処理が必要であるときにオペレーション要求をマスタ・キャッシュサービス・ノードに送信するために用いられる要求送信ユニット1401と、さらに、結果受信ユニット1402を含み、これは、マスタ・キャッシュサービス・ノードにより要求送信ユニット1402に送信されるオペレーション要求のオペレーション結果を受信するために用いられる。
キャッシュ・クライアントは、さらに、障害タグ付けユニット1403を含んでおり、これは、結果受信ユニット1402により受信したオペレーション結果に基づき、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗したと判断される場合に、マスタ・キャッシュサービス・ノードに障害タグを付けるために用いられる。この障害タグ付けユニット1403は、マスタ・サービス・ノードがキャッシュデータ処理の実行に失敗したときにキャッシュ・クライアントの障害回数をインクリメントするために用いられるカウンタ・サブユニット14031と、カウンタ・サブユニット14031により積算された障害回数を閾値と比較して、障害回数が閾値を超えている場合にマスタ・キャッシュサービス・ノードに障害タグを付けるために用いられる障害タグ付けサブユニット14032と、障害タグ付けサブユニット14032によりマスタ・キャッシュサービス・ノードに障害タグが付けられた後にマスタ・キャッシュサービス・ノードの障害有効期間を設定するために用いられる障害有効期間設定サブユニット14033と、を含んでいる。
キャッシュ・クライアントは、さらに、バックアップ・キャッシュサービス・ノードを選択しバックアップ・キャッシュサービス・ノードにオペレーション要求を送信するために用いられるキャッシュサービス・ノード選択ユニット1404を含んでいる。キャッシュサービス・ノード選択ユニット1404は、障害タグ付けサブユニットにより障害タグが付けられたキャッシュサービス・ノードに基づきネットワークにおいて利用可能なキャッシュサービス・ノードを取得するために用いられる利用可能キャッシュサービス・ノード取得サブユニット14041と、利用可能キャッシュサービス・ノード取得サブユニット14041により取得された利用可能キャッシュサービス・ノードから、適当な方法により1つのキャッシュサービス・ノードをバックアップ・キャッシュサービス・ノードとして選択するために用いられるキャッシュサービス・ノード選択サブユニット14042とを含んでいる。キャッシュサービス・ノード選択ユニット1404は、さらに、マスタ・キャッシュサービス・ノードを選択するためにも用いられ、その選択されたマスタ・キャッシュサービス・ノードに、要求送信ユニット1401がオペレーション要求を送信する。
要求送信ユニット1401は、また、キャッシュデータの処理が必要であるときにバックアップ・キャッシュサービス・ノードに対してオペレーション要求を送信するためにも用いられる。
結果受信ユニット1402は、さらに、要求送信ユニット1401によりバックアップ・キャッシュサービス・ノードに送信されるオペレーション要求のオペレーション結果を受信するためにも用いられる。
障害タグ付けユニット1403は、さらに、結果受信ユニット1402により受信されたオペレーション結果に基づきオペレーションが失敗したと判断される場合に、バックアップ・キャッシュサービス・ノードに障害タグを付けるためにも用いられる。
キャッシュ・クライアント1400は、さらに、結果受信ユニット1402により受信したバックアップ・キャッシュサービス・ノードからのオペレーション要求のオペレーション結果に応じて処理を行うために用いられるオペレーション結果処理ユニット1405を含んでいる。オペレーション結果処理ユニット1405は、キャッシュ・クライアントの結果受信ユニット1402により受信したオペレーション結果に基づきオペレーションに成功したと判断される場合に、マスタ・キャッシュサービス・ノードについて非同期処理を実行するために用いられる非同期処理サブユニット14051を含んでいる。この非同期処理サブユニット14051は、オペレーションが成功し、そのオペレーションが取得オペレーションである場合に用いられ、オペレーション結果をキャッシュ・クライアントにキャッシュし、オペレーションおよびオペレーション結果をクラスタ・オペレーション・タスク・キューに保存する。タスク実行スレッド・プールが、オペレーションおよびオペレーション内容をクラスタに返して、そのオペレーションが他のキャッシュサービス・ノードにより実行されないようにする。さらに、非同期処理サブユニットは、オペレーションが成功し、そのオペレーションが更新オペレーションである場合に用いられ、オペレーションおよびオペレーション結果をクラスタ・オペレーション・タスク・キューに保存する。タスク実行スレッド・プールは、オペレーションおよびオペレーション内容をクラスタにコピーして、そのオペレーションが他のキャッシュサービス・ノードにより実行されないようにする。
図15は、スタンバイ・クラスタ構成モードにあるキャッシュ・クライアントを示すブロック図である。この例に示すキャッシュ・クライアント1500は、キャッシュデータの処理が必要であるときにオペレーション要求をマスタ・キャッシュサービス・ノードに送信するために用いられる要求送信ユニット1501と、さらに、結果受信ユニット1502を含み、これは、要求送信ユニット1502により送信されるマスタ・キャッシュサービス・ノードからのオペレーション要求のオペレーション結果を受信するために用いられる。
キャッシュ・クライアントは、さらに、障害タグ付けユニット1503を含んでおり、これは、結果受信ユニット1502により受信したオペレーション結果に基づき、マスタ・キャッシュサービス・ノードがキャッシュデータ処理の実行に失敗したと判断される場合に、マスタ・キャッシュサービス・ノードに障害タグを付けるために用いられる。この障害タグ付けユニット1503は、マスタ・サービス・ノードがキャッシュデータ処理の実行に失敗したときにキャッシュ・クライアントの障害回数を積算するために用いられるカウンタ・サブユニット15031と、カウンタ・サブユニット15031により積算された障害回数を閾値と比較して、障害回数が閾値を超えている場合にマスタ・キャッシュサービス・ノードに障害タグを付けるために用いられる障害タグ付けサブユニット15032と、障害タグ付けサブユニット15032によりマスタ・キャッシュサービス・ノードに障害タグが付けられた後にマスタ・キャッシュサービス・ノードの障害有効期間を設定するために用いられる障害有効期間設定サブユニット15033と、を含んでいる。
キャッシュ・クライアントは、さらに、バックアップ・キャッシュサービス・ノードを選択するために用いられるキャッシュサービス・ノード選択ユニット1504と、その選択されたバックアップ・キャッシュサービス・ノードに対してオペレーション要求を送信する要求送信ユニット1501とを含む。
要求送信ユニット1501は、また、キャッシュデータの処理が必要であるときにバックアップ・キャッシュサービス・ノードに対してオペレーション要求を送信するためにも用いられる。
結果受信ユニット1502は、さらに、バックアップ・キャッシュサービス・ノードにより要求送信ユニット1501に送信されるオペレーション要求のオペレーション結果を受信するためにも用いられる。
障害タグ付けユニット1503は、さらに、結果受信ユニット1502により受信されたオペレーション結果に基づきオペレーションが失敗したと判断される場合に、バックアップ・キャッシュサービス・ノードに障害タグを付けるためにも用いられる。
キャッシュ・クライアント1500は、さらに、結果受信ユニット1502により受信したバックアップ・キャッシュサービス・ノードからのオペレーション要求のオペレーション結果に応じて処理を行うために用いられるオペレーション結果処理ユニット1505を含んでいる。オペレーション結果処理ユニット1505は、バックアップ・キャッシュサービス・ノードについてデータ同期化を実行するために用いられるデータ同期化サブユニット15051を含んでいる。
キャッシュ・クライアント1500は、さらに、マスタ・キャッシュサービス・ノードおよびバックアップ・キャッシュサービス・ノードについてハートビート検出を実行するために用いられるハートビート検出ユニット1506を含んでおり、ハートビート検出の結果に基づいて、マスタ・キャッシュサービス・ノードおよび/またはバックアップ・キャッシュサービス・ノードの障害状態が更新される。
上記のユニットは、1つまたは複数の汎用プロセッサ上で実行されるソフトウェア・コンポーネントとして、プログラマブル・ロジック・デバイスおよび/または特定の機能を実行するように設計された特定用途向け集積回路などのハードウェアとして、あるいはそれらの組み合わせにより、実現することができる。一部の実施形態では、ユニットは、ソフトウェア・プロダクトの形態で実現することができ、これらは不揮発性記憶媒体(光ディスク、フラッシュ記憶装置、モバイル・ハードディスクなど)に記憶することが可能であって、本発明の実施形態に記載した方法をコンピュータ機器(パーソナルコンピュータ、サーバ、ネットワーク装置など)に実行させるための多くの命令を含むものである。ユニットは、単一の機器で、あるいは複数の機器に分散させて、実現することができる。ユニットの機能は、相互に融合させることができ、あるいは、さらに複数のサブユニットに分割することができる。
一部の実施形態では、クラスタ内のキャッシュサービス・ノードの容量が不足しているときに、ノードの容量拡張を動的に実施することができる。集中キャッシュにおいて、容量拡張を実現するため、キャッシュ・ノードは複数のキャッシュ・インスタンスからなる仮想キャッシュサービス・ノードとして構成されている。図16は、容量拡張が可能なキャッシュ・ノードを示す図である。図示の例では、クラスタAは、キャッシュ・ノードAとキャッシュ・ノードBを含んでいる。キャッシュ・ノードAは、キャッシュ・インスタンス1、キャッシュ・インスタンス2、およびキャッシュ・インスタンス3を含んでおり、キャッシュ・ノードBは、キャッシュ・インスタンス4、キャッシュ・インスタンス5、およびキャッシュ・インスタンス6を含んでいる。これらのキャッシュ・インスタンスは、1つのサーバに含むことができ、あるいはいくつかの異なるサーバに分散させることができる。キャッシュサービス・ノードの容量が不足しているときには、追加のキャッシュ・インスタンスを仮想サービスノードに加えることができ、これによって、処理能力が向上し、キャッシュ・クライアントの使用に支障をきたすことがない。
しかしながら、キャッシュ・インスタンスの数が変わると、キャッシュのヒット率に影響することがある。例えば、最初にキャッシュサービス・ノードが3つのみであるとして、ハッシュ法をキーによって実行し、ハッシュ結果を得る。ハッシュ結果に基づいてキャッシュサービス・ノード・モジュールの番号を取得し、そして最後的に、コンテンツを保存または取得するインスタンスを決定する。キャッシュ・インスタンスの数が変わると、最初に保存されたデータが正常に取得できないことがある。クラスタ構成において、データ転送は、いくつかの方法で実現することができる。一部の実施形態では、データ転送インタフェースがキャッシュ・クライアントにより提供され、クラスタ内のキャッシュサービス・ノードのデータが他のキャッシュサービス・ノードに転送される。例えば、キャッシュ・ノードAに対して容量拡張を実施した後に、データをキャッシュ・ノードBからキャッシュ・ノードAに直ぐに転送することができる。具体的には、キャッシュ・クライアントが、キャッシュ・ノードB内のすべてのデータを取得し、そして、そのデータをキャッシュ・ノードAに保存する。一部の実施形態では、自動で段階的データ転送が行われる。アクティブ・クラスタ構成では、キャッシュ・ノードAに対して容量拡張を実施した後に、キャッシュ・クライアントがデータをもっていなければ、他のキャッシュサービス・ノードから直ちにデータを取得する。キャッシュ・クライアントは、取得したデータを、新しい方法に従ってキャッシュ・ノードAに保存する。このようにして、キャッシュ・クライアントは、保存されたすべてのデータを段階的にキャッシュ・ノードAにコピーする。
クラスタ構成モードを導入することで、マスタ・キャッシュサービス・ノードに障害が発生した場合には、バックアップ・キャッシュサービス・ノードが、キャッシュデータ処理の実行のために選択される。こうして、キャッシュサービス・ノードの障害の結果としてキャッシュサービス・ノードが利用不可能になるという問題およびデータ損失の問題が解決され、システムの信頼性および可用性が向上する。当然のことながら、本願を実現するプロダクトは、上記の利点をすべて同時に備えている必要はない。
上記の実施形態は、明確な理解を目的として、ある程度詳細に記載したが、本発明は、提示した詳細に限定されるものではない。本発明を実施する多くの代替の方法がある。開示された実施形態は、例示であって、限定するものではない。

Claims (18)

  1. キャッシュデータを処理する方法であって、
    複数のキャッシュサービス・ノードを含むキャッシュクラスタ内のマスタ・キャッシュサービス・ノードに対してキャッシュ処理要求を送信し、前記キャッシュクラスタは、前記複数のキャッシュサービス・ノードのすべてが稼働状態にあって、マスタ・キャッシュサービス・ノードが前記複数のキャッシュサービス・ノードの中から選択されるアクティブ・クラスタ構成モード、あるいは、前記複数のキャッシュサービス・ノードの中で唯一稼働状態にあるノードがマスタ・キャッシュサービス・ノードであるスタンバイ・クラスタ構成モードのいずれかに構成可能であり、
    前記マスタ・キャッシュサービス・ノードからの応答を待機し、
    前記マスタ・キャッシュサービス・ノードに障害が発生したか否かを判断し、
    前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、バックアップ・キャッシュサービス・ノードを選択すること、を備える方法。
  2. 前記マスタ・キャッシュサービス・ノードに障害が発生したか否かの判断は、障害回数を閾値と比較することを含む、請求項1に記載の方法。
  3. 前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、前記マスタ・キャッシュサービス・ノードに障害タグを関連付けることをさらに備える、請求項1に記載の方法。
  4. 前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、前記マスタ・キャッシュサービス・ノードに障害タグを関連付け、前記マスタ・キャッシュサービス・ノードの障害有効期間を設定すること、をさらに備える、請求項1に記載の方法。
  5. 前記バックアップ・キャッシュサービス・ノードの選択は、
    前記クラスタ内の障害タグが付けられていない利用可能なキャッシュサービス・ノードを識別し、
    前記利用可能なキャッシュサービス・ノードの中から前記バックアップ・キャッシュサービス・ノードを選択すること、を含む、請求項1に記載の方法。
  6. 前記バックアップ・キャッシュサービス・ノードからの応答を待つことをさらに備える、請求項1に記載の方法。
  7. 前記マスタ・キャッシュサービス・ノードにキャッシュ処理要求を送信に先立って、前記方法は、
    障害タグが付けられていない利用可能なキャッシュサービス・ノードを識別し、
    前記利用可能なキャッシュサービス・ノードの中から前記マスタ・キャッシュサービス・ノードを選択すること、をさらに備える請求項1に記載の方法。
  8. 前記キャッシュ処理要求の送信、および前記応答の待機は、非同期的に実行される、請求項1に記載の方法。
  9. 前記マスタ・キャッシュサービス・ノードについてハートビート検出を実行し、
    前記マスタ・キャッシュサービス・ノードに継続して障害が発生している場合に、前記マスタ・キャッシュサービス・ノードの障害状態を更新すること、をさらに備える、請求項1に記載の方法。
  10. キャッシング・システムであって、
    複数のキャッシュサービス・ノードを含むキャッシュクラスタであって、前記キャッシュクラスタは、前記複数のキャッシュサービス・ノードのすべてが稼働状態にあって、マスタ・キャッシュサービス・ノードが前記複数のキャッシュサービス・ノードの中から選択されるアクティブ・クラスタ構成モード、あるいは、前記複数のキャッシュサービス・ノードの中で唯一稼働状態にあるノードがマスタ・キャッシュサービス・ノードであるスタンバイ・クラスタ構成モードのいずれかに構成可能であり、
    キャッシュ・クライアントであって、
    前記マスタ・キャッシュサービス・ノードにキャッシュ処理要求を送信し、
    前記マスタ・キャッシュサービス・ノードからの応答を待機し、
    前記マスタ・キャッシュサービス・ノードに障害が発生したか否かを判断し、
    前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、バックアップ・キャッシュサービス・ノードを選択する、ように構成されているキャッシュ・クライアントと、を備えるシステム。
  11. 前記マスタ・キャッシュサービス・ノードに障害が発生したか否かの判断は、障害回数を閾値と比較することを含む、請求項10に記載の方法。
  12. 前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、前記キャッシュ・クライアントは、さらに、前記マスタ・キャッシュサービス・ノードに障害タグを関連付けるように構成されている、請求項10に記載のシステム。
  13. 前記マスタ・キャッシュサービス・ノードに障害が発生した場合に、前記キャッシュ・クライアントは、さらに、前記マスタ・キャッシュサービス・ノードに障害タグおよび障害有効期間を関連付けるように構成されている、請求項10に記載のシステム。
  14. 前記バックアップ・キャッシュサービス・ノードのは、
    前記クラスタ内の障害タグが付けられていない利用可能なキャッシュサービス・ノードを識別し、
    前記利用可能なキャッシュサービス・ノードの中から前記バックアップ・キャッシュサービス・ノードを選択すること、を含む、請求項10に記載のシステム。
  15. 前記キャッシュ・クライアントは、さらに、前記バックアップ・キャッシュサービス・ノードからの応答を待つように構成されている、請求項10に記載のシステム。
  16. 前記マスタ・キャッシュサービス・ノードにキャッシュ処理要求の送信に先立って、前記キャッシュ・クライアントは、さらに、
    障害タグが付けられていない利用可能なキャッシュサービス・ノードを識別し、
    前記利用可能なキャッシュサービス・ノードの中から前記マスタ・キャッシュサービス・ノードを選択するように構成されている、請求項10に記載のシステム。
  17. 前記キャッシュ処理要求の送信、および前記応答の待機は、非同期的に実行される、請求項10に記載のシステム。
  18. 前記キャッシュ・クライアントは、さらに、
    前記マスタ・キャッシュサービス・ノードについてハートビート検出を実行し、
    前記マスタ・キャッシュサービス・ノードに継続して障害が発生している場合に、前記マスタ・キャッシュサービス・ノードの障害状態を更新するように構成されている、請求項10に記載のシステム。
JP2012513037A 2009-05-25 2010-05-20 キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理 Active JP5714571B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN2009101437363A CN101562543B (zh) 2009-05-25 2009-05-25 一种缓存数据的处理方法、处理系统和装置
CN200910143736.3 2009-05-25
US12/800,691 US8972773B2 (en) 2009-05-25 2010-05-19 Cache data processing using cache cluster with configurable modes
US12/800,691 2010-05-19
PCT/US2010/001502 WO2010138168A1 (en) 2009-05-25 2010-05-20 Cache data processing using cache cluster with configurable modes

Publications (3)

Publication Number Publication Date
JP2012528382A true JP2012528382A (ja) 2012-11-12
JP2012528382A5 JP2012528382A5 (ja) 2013-07-04
JP5714571B2 JP5714571B2 (ja) 2015-05-07

Family

ID=41221175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012513037A Active JP5714571B2 (ja) 2009-05-25 2010-05-20 キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理

Country Status (6)

Country Link
US (2) US8972773B2 (ja)
EP (1) EP2435916B1 (ja)
JP (1) JP5714571B2 (ja)
CN (1) CN101562543B (ja)
HK (1) HK1134727A1 (ja)
WO (1) WO2010138168A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103973424A (zh) * 2014-05-22 2014-08-06 乐得科技有限公司 缓存系统中的故障解决方法和设备
KR20160147947A (ko) * 2014-06-26 2016-12-23 인텔 코포레이션 로컬 캐시들을 갖는 메모리 캐시형 시스템들

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103544A (zh) * 2009-12-16 2011-06-22 腾讯科技(深圳)有限公司 一种分布式缓存的实现方法及装置
US8898318B2 (en) * 2010-06-03 2014-11-25 Microsoft Corporation Distributed services authorization management
CN102137139A (zh) * 2010-09-26 2011-07-27 华为技术有限公司 缓存替换策略的选择方法、装置、代理服务器和系统
US8621151B2 (en) 2010-11-23 2013-12-31 IP Cube Partners (IPC) Co., Ltd. Active memory processor system
US8504778B2 (en) 2010-11-24 2013-08-06 IP Cube Partners (ICP) Co., Ltd. Multi-core active memory processor system
US8589628B2 (en) * 2010-11-29 2013-11-19 IP Cube Partners (ICP) Co., Ltd. Hybrid active memory processor system
CN102739720B (zh) * 2011-04-14 2015-01-28 中兴通讯股份有限公司 分布式缓存服务器系统及其应用方法、缓存客户端
CN102790784A (zh) * 2011-05-18 2012-11-21 阿里巴巴集团控股有限公司 分布式缓存方法及系统、缓存解析方法及解析系统
US8671249B2 (en) * 2011-07-22 2014-03-11 Fusion-Io, Inc. Apparatus, system, and method for managing storage capacity recovery
CN103036920A (zh) * 2011-10-09 2013-04-10 镇江雅迅软件有限责任公司 一种基于自动容错技术的分布式数据传输方法
CN102346779B (zh) * 2011-10-18 2013-07-31 中国联合网络通信集团有限公司 分布式文件系统和主控节点的备份方法
US9229740B1 (en) 2011-11-02 2016-01-05 Amazon Technologies, Inc. Cache-assisted upload proxy
US8984162B1 (en) * 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
US8726264B1 (en) 2011-11-02 2014-05-13 Amazon Technologies, Inc. Architecture for incremental deployment
CN103186435B (zh) * 2011-12-28 2015-11-25 英业达股份有限公司 系统错误处理方法与使用该方法的服务器系统
EP2859456A4 (en) * 2012-06-08 2016-06-15 Hewlett Packard Development Co INCREASING MEMORY CAPACITY FOR A KEY VALUE CACHE
CN102724314B (zh) * 2012-06-20 2015-08-05 深圳市远行科技有限公司 一种基于元数据管理的分布式缓存客户端
CN102752093B (zh) * 2012-06-29 2016-02-10 中国联合网络通信集团有限公司 基于分布式文件系统的数据处理方法、设备和系统
US9549037B2 (en) 2012-08-07 2017-01-17 Dell Products L.P. System and method for maintaining solvency within a cache
US9495301B2 (en) * 2012-08-07 2016-11-15 Dell Products L.P. System and method for utilizing non-volatile memory in a cache
US9311240B2 (en) 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US9852073B2 (en) 2012-08-07 2017-12-26 Dell Products L.P. System and method for data redundancy within a cache
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
CN103685351B (zh) * 2012-09-04 2017-03-29 中国移动通信集团公司 一种基于云计算平台的缓存服务节点的调度方法和设备
US9529772B1 (en) 2012-11-26 2016-12-27 Amazon Technologies, Inc. Distributed caching cluster configuration
US9602614B1 (en) 2012-11-26 2017-03-21 Amazon Technologies, Inc. Distributed caching cluster client configuration
US9847907B2 (en) * 2012-11-26 2017-12-19 Amazon Technologies, Inc. Distributed caching cluster management
US9262323B1 (en) 2012-11-26 2016-02-16 Amazon Technologies, Inc. Replication in distributed caching cluster
US9152501B2 (en) 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9202041B2 (en) * 2013-02-07 2015-12-01 Fairchild Semiconductor Corporation Permanent lockout attack detection
US10334069B2 (en) * 2013-05-10 2019-06-25 Dropbox, Inc. Managing a local cache for an online content-management system
US9330055B2 (en) * 2013-06-04 2016-05-03 International Business Machines Corporation Modular architecture for extreme-scale distributed processing applications
CN104301345B (zh) * 2013-07-17 2018-04-27 阿里巴巴集团控股有限公司 一种Cache集群中删除数据的方法及系统
US9423820B2 (en) 2013-07-31 2016-08-23 Fairchild Semiconductor Corporation Complimentary bit slicing side channel attack defense
US10803015B2 (en) 2013-08-06 2020-10-13 Walmart Apollo, Llc Caching system and method
US10116762B2 (en) * 2013-08-06 2018-10-30 Walmart Apollo, Llc System and method for storing and processing web service requests
US10419572B2 (en) 2013-08-06 2019-09-17 Walmart Apollo, Llc Caching system and method
CN103475520B (zh) * 2013-09-10 2017-04-26 聚好看科技股份有限公司 一种分布式网络中的事务处理控制方法及装置
CN103516556A (zh) * 2013-10-23 2014-01-15 北京国双科技有限公司 分布式系统及其控制方法和装置
US9825857B2 (en) 2013-11-05 2017-11-21 Cisco Technology, Inc. Method for increasing Layer-3 longest prefix match scale
US9502111B2 (en) 2013-11-05 2016-11-22 Cisco Technology, Inc. Weighted equal cost multipath routing
US9686180B2 (en) 2013-11-05 2017-06-20 Cisco Technology, Inc. Managing routing information for tunnel endpoints in overlay networks
US10951522B2 (en) 2013-11-05 2021-03-16 Cisco Technology, Inc. IP-based forwarding of bridged and routed IP packets and unicast ARP
US9674086B2 (en) 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
US9655232B2 (en) 2013-11-05 2017-05-16 Cisco Technology, Inc. Spanning tree protocol (STP) optimization techniques
US9397946B1 (en) 2013-11-05 2016-07-19 Cisco Technology, Inc. Forwarding to clusters of service nodes
US9374294B1 (en) 2013-11-05 2016-06-21 Cisco Technology, Inc. On-demand learning in overlay networks
US10778584B2 (en) 2013-11-05 2020-09-15 Cisco Technology, Inc. System and method for multi-path load balancing in network fabrics
US9769078B2 (en) 2013-11-05 2017-09-19 Cisco Technology, Inc. Dynamic flowlet prioritization
US9509092B2 (en) 2013-11-06 2016-11-29 Cisco Technology, Inc. System and apparatus for network device heat management
US20150213045A1 (en) * 2014-01-24 2015-07-30 Alcatel-Lucent Israel Ltd. Methods And Systems For Storing Replicated Data In The Cloud
US10025873B2 (en) 2014-04-18 2018-07-17 Walmart Apollo, Llc System and method for storing and processing database requests
CN104111829A (zh) * 2014-06-25 2014-10-22 小米科技有限责任公司 数据存储方法及装置
CN104281643A (zh) * 2014-08-12 2015-01-14 广州华多网络科技有限公司 业务数据的存储方法、业务机及存储机
US10116493B2 (en) 2014-11-21 2018-10-30 Cisco Technology, Inc. Recovering from virtual port channel peer failure
CN104517183A (zh) * 2014-12-18 2015-04-15 深圳市燃气集团股份有限公司 基于Oracle EBS系统的库存处理方法及系统
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
CN104636436B (zh) * 2014-12-31 2018-01-23 北京金和软件股份有限公司 一种可配置的分布式缓存系统
CN106156176B (zh) * 2015-04-17 2020-04-24 腾讯科技(深圳)有限公司 一种数据清理方法及装置
US10516752B2 (en) * 2015-06-05 2019-12-24 Apple Inc. Edge caching shared devices
CN105677251B (zh) * 2016-01-05 2018-12-21 上海瀚之友信息技术服务有限公司 基于Redis集群的存储系统
US10460296B2 (en) 2016-02-08 2019-10-29 Bank Of America Corporation System for processing data using parameters associated with the data for auto-processing
US10437880B2 (en) 2016-02-08 2019-10-08 Bank Of America Corporation Archive validation system with data purge triggering
US10437778B2 (en) 2016-02-08 2019-10-08 Bank Of America Corporation Archive validation system with data purge triggering
US9952942B2 (en) 2016-02-12 2018-04-24 Bank Of America Corporation System for distributed data processing with auto-recovery
US10067869B2 (en) * 2016-02-12 2018-09-04 Bank Of America Corporation System for distributed data processing with automatic caching at various system levels
US10142163B2 (en) 2016-03-07 2018-11-27 Cisco Technology, Inc BFD over VxLAN on vPC uplinks
US10333828B2 (en) 2016-05-31 2019-06-25 Cisco Technology, Inc. Bidirectional multicasting over virtual port channel
US10530888B2 (en) 2016-06-01 2020-01-07 Home Box Office, Inc. Cached data expiration and refresh
CN107463468A (zh) * 2016-06-02 2017-12-12 北京京东尚科信息技术有限公司 缓存管理方法及其设备
CN105915644B (zh) * 2016-06-17 2019-12-06 北京汉唐自远技术股份有限公司 一种服务器负载均衡方法
CN106209447B (zh) * 2016-07-07 2019-11-15 深圳市创梦天地科技有限公司 分布式缓存的故障处理方法及装置
US11509501B2 (en) 2016-07-20 2022-11-22 Cisco Technology, Inc. Automatic port verification and policy application for rogue devices
US10193750B2 (en) 2016-09-07 2019-01-29 Cisco Technology, Inc. Managing virtual port channel switch peers from software-defined network controller
US10191824B2 (en) * 2016-10-27 2019-01-29 Mz Ip Holdings, Llc Systems and methods for managing a cluster of cache servers
CN106649555A (zh) * 2016-11-08 2017-05-10 深圳市中博睿存科技有限公司 存储单元状态标记方法及分布式存储系统
US10382552B2 (en) * 2016-12-12 2019-08-13 Verizon Patent And Licensing Inc. User device ad-hoc distributed caching of content
CN108459821B (zh) * 2017-02-21 2022-11-18 中兴通讯股份有限公司 一种数据缓存的方法及装置
CN106603319B (zh) * 2017-03-02 2020-10-09 腾讯科技(深圳)有限公司 一种故障处理的方法、管理服务器以及逻辑服务器
CN106973093B (zh) * 2017-03-23 2019-11-19 北京奇艺世纪科技有限公司 一种服务切换方法和装置
CN108809681A (zh) * 2017-05-04 2018-11-13 华为技术有限公司 一种核查数据一致性的方法、设备和系统
CN107102918B (zh) * 2017-05-26 2020-06-16 苏州浪潮智能科技有限公司 一种数据处理方法和装置
US10547509B2 (en) 2017-06-19 2020-01-28 Cisco Technology, Inc. Validation of a virtual port channel (VPC) endpoint in the network fabric
CN107545053B (zh) * 2017-08-24 2021-01-22 苏州浪潮智能科技有限公司 一种集群系统缓存查询方法及设备
CN109815049B (zh) * 2017-11-21 2021-03-26 北京金山云网络技术有限公司 节点宕机恢复方法、装置、电子设备及存储介质
CN108400885A (zh) * 2018-01-17 2018-08-14 北京奇艺世纪科技有限公司 一种服务可用性检测方法、装置及电子设备
WO2019232725A1 (en) * 2018-06-06 2019-12-12 Huawei Technologies Co., Ltd. System and method for controlling management operations and shared memory space for multi-tenant cache service in cloud computing
CN110442420A (zh) * 2019-06-28 2019-11-12 苏州浪潮智能科技有限公司 一种存储节点的工作迁移方法与装置
US10802973B1 (en) 2019-07-01 2020-10-13 Bank Of America Corporation Data access tool
CN111314241B (zh) * 2020-01-17 2024-03-29 新华智云科技有限公司 一种任务调度方法及调度系统
CN111522879B (zh) * 2020-04-16 2023-09-29 北京雷石天地电子技术有限公司 一种基于缓存的数据分发方法和电子设备
CN112104752B (zh) * 2020-11-12 2021-02-26 上海七牛信息技术有限公司 一种内容分发网络缓存节点的热点均衡方法及系统
CN112532525B (zh) * 2020-11-25 2022-11-25 北京金山云网络技术有限公司 设备恢复服务的处理方法、装置和系统
CN112817992B (zh) * 2021-01-29 2023-06-23 北京百度网讯科技有限公司 执行更改任务的方法、装置、电子设备以及可读存储介质
CN113238887A (zh) * 2021-05-19 2021-08-10 北京小米移动软件有限公司 数据处理方法、装置及存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0713792A (ja) * 1993-06-29 1995-01-17 Nec Corp ホットスタンバイシステムにおけるエラー制御方式
US6038641A (en) * 1988-12-30 2000-03-14 Packard Bell Nec Two stage cache memory system and method
JP2000148704A (ja) * 1998-11-05 2000-05-30 Nec Corp クラスタ計算機におけるメモリ障害処理方法及びクラスタ計算機
US6243795B1 (en) * 1998-08-04 2001-06-05 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Redundant, asymmetrically parallel disk cache for a data storage system
US20020120887A1 (en) * 2001-02-23 2002-08-29 Hughes Brian William Cache test sequence for single-ported row repair CAM
JP2003022259A (ja) * 2001-07-06 2003-01-24 Mitsubishi Electric Corp クライアントサーバ制御システム
JP2004295656A (ja) * 2003-03-27 2004-10-21 Ntt Docomo Inc 通信システム、クライアント装置及びクライアント装置によるサーバ装置の負荷分散方法
JP2007200103A (ja) * 2006-01-27 2007-08-09 Nec Corp クライアントサーバシステムおよびリソース制御方法
WO2007133300A2 (en) * 2006-04-21 2007-11-22 Honeywell International Inc. Error filtering in fault tolerant computing systems
US20080172679A1 (en) * 2007-01-11 2008-07-17 Jinmei Shen Managing Client-Server Requests/Responses for Failover Memory Managment in High-Availability Systems
JP2008217285A (ja) * 2007-03-02 2008-09-18 Hitachi Ltd 情報処理システムの運用管理装置および運用管理方法
JP2008269462A (ja) * 2007-04-24 2008-11-06 Hitachi Ltd ノードの管理装置及び方法
JP2009098715A (ja) * 2007-10-12 2009-05-07 Nec Corp 冗長システム装置並びに冗長システム装置におけるジョブの実行方法及び実行プログラム
US7890701B2 (en) * 2001-01-12 2011-02-15 Parallel Networks, Llc Method and system for dynamic distributed data caching

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US746130A (en) * 1903-03-11 1903-12-08 George Washington Mcmillian Saw-handle.
US5896506A (en) 1996-05-31 1999-04-20 International Business Machines Corporation Distributed storage management system having a cache server and method therefor
US5951695A (en) 1997-07-25 1999-09-14 Hewlett-Packard Company Fast database failover
US6470386B1 (en) * 1997-09-26 2002-10-22 Worldcom, Inc. Integrated proxy interface for web based telecommunications management tools
US6188695B1 (en) * 1997-12-18 2001-02-13 Ericsson Inc. System and method for multi-node data synchronization
US6122629A (en) * 1998-04-30 2000-09-19 Compaq Computer Corporation Filesystem data integrity in a single system image environment
US6601187B1 (en) 2000-03-31 2003-07-29 Hewlett-Packard Development Company, L. P. System for data replication using redundant pairs of storage controllers, fibre channel fabrics and links therebetween
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US7035911B2 (en) * 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
WO2002056182A2 (en) 2001-01-12 2002-07-18 Epicrealm Operating Inc Method and system for community data caching
US7870258B2 (en) * 2001-08-08 2011-01-11 Microsoft Corporation Seamless fail-over support for virtual interface architecture (VIA) or the like
US7120690B1 (en) * 2001-09-27 2006-10-10 Emc Corporation Managing a distributed directory database
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
US7461147B1 (en) * 2002-08-26 2008-12-02 Netapp. Inc. Node selection within a network based on policy
US7657779B2 (en) * 2002-09-18 2010-02-02 International Business Machines Corporation Client assisted autonomic computing
US7028147B2 (en) * 2002-12-13 2006-04-11 Sun Microsystems, Inc. System and method for efficiently and reliably performing write cache mirroring
US6917967B2 (en) * 2002-12-13 2005-07-12 Sun Microsystems, Inc. System and method for implementing shared memory regions in distributed shared memory systems
JP4107083B2 (ja) * 2002-12-27 2008-06-25 株式会社日立製作所 高可用ディスク制御装置とその障害処理方法及び高可用ディスクサブシステム
CN1326045C (zh) * 2003-06-09 2007-07-11 浪潮电子信息产业股份有限公司 构建高可用分布式存储系统的方法
US7461130B1 (en) * 2004-11-24 2008-12-02 Sun Microsystems, Inc. Method and apparatus for self-organizing node groups on a network
CA2601767C (en) * 2005-04-01 2012-05-22 Arroyo Video Solutions, Inc. Stream control failover
US20070101186A1 (en) 2005-11-02 2007-05-03 Inventec Corporation Computer platform cache data remote backup processing method and system
US8370649B2 (en) * 2006-03-31 2013-02-05 Cisco Technology, Inc. Stream control failover utilizing an attribute-dependent protection mechanism
US7395390B2 (en) 2006-07-12 2008-07-01 Inventec Corporation System for backing up cache memory in a double backup server structure
US20080091895A1 (en) 2006-10-11 2008-04-17 Inventec Corporation Cache data backup method and system for computer clustering systems
CN101188569B (zh) * 2006-11-16 2011-05-04 饶大平 在网络上构建数据量子空间的方法及分布式文件存储系统
US8069145B2 (en) * 2007-08-30 2011-11-29 Red Hat, Inc. Data gravitation
CN101388759B (zh) * 2007-09-10 2011-07-13 中兴通讯股份有限公司 实现数据的异步复制到同步复制的转换方法和系统
US8316113B2 (en) 2008-12-19 2012-11-20 Watchguard Technologies, Inc. Cluster architecture and configuration for network security devices
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US8108612B2 (en) * 2009-05-15 2012-01-31 Microsoft Corporation Location updates for a distributed data store
JP4936088B2 (ja) * 2010-03-15 2012-05-23 日本電気株式会社 ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
US8874961B2 (en) * 2010-03-22 2014-10-28 Infosys Limited Method and system for automatic failover of distributed query processing using distributed shared memory
US8666939B2 (en) * 2010-06-28 2014-03-04 Sandisk Enterprise Ip Llc Approaches for the replication of write sets
US8726264B1 (en) * 2011-11-02 2014-05-13 Amazon Technologies, Inc. Architecture for incremental deployment
US9235519B2 (en) * 2012-07-30 2016-01-12 Futurewei Technologies, Inc. Method for peer to peer cache forwarding
US20140082129A1 (en) * 2012-09-18 2014-03-20 Netapp, Inc. System and method for managing a system of appliances that are attached to a networked file system
US9619404B2 (en) * 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038641A (en) * 1988-12-30 2000-03-14 Packard Bell Nec Two stage cache memory system and method
JPH0713792A (ja) * 1993-06-29 1995-01-17 Nec Corp ホットスタンバイシステムにおけるエラー制御方式
US6782492B1 (en) * 1998-05-11 2004-08-24 Nec Corporation Memory error recovery method in a cluster computer and a cluster computer
US6243795B1 (en) * 1998-08-04 2001-06-05 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Redundant, asymmetrically parallel disk cache for a data storage system
JP2000148704A (ja) * 1998-11-05 2000-05-30 Nec Corp クラスタ計算機におけるメモリ障害処理方法及びクラスタ計算機
US7890701B2 (en) * 2001-01-12 2011-02-15 Parallel Networks, Llc Method and system for dynamic distributed data caching
US20020120887A1 (en) * 2001-02-23 2002-08-29 Hughes Brian William Cache test sequence for single-ported row repair CAM
JP2003022259A (ja) * 2001-07-06 2003-01-24 Mitsubishi Electric Corp クライアントサーバ制御システム
JP2004295656A (ja) * 2003-03-27 2004-10-21 Ntt Docomo Inc 通信システム、クライアント装置及びクライアント装置によるサーバ装置の負荷分散方法
JP2007200103A (ja) * 2006-01-27 2007-08-09 Nec Corp クライアントサーバシステムおよびリソース制御方法
JP2009534738A (ja) * 2006-04-21 2009-09-24 ハネウェル・インターナショナル・インコーポレーテッド フォールト・トレランス・コンピューティング・システムにおけるエラー・フィルタリング
WO2007133300A2 (en) * 2006-04-21 2007-11-22 Honeywell International Inc. Error filtering in fault tolerant computing systems
US20080172679A1 (en) * 2007-01-11 2008-07-17 Jinmei Shen Managing Client-Server Requests/Responses for Failover Memory Managment in High-Availability Systems
JP2008217285A (ja) * 2007-03-02 2008-09-18 Hitachi Ltd 情報処理システムの運用管理装置および運用管理方法
JP2008269462A (ja) * 2007-04-24 2008-11-06 Hitachi Ltd ノードの管理装置及び方法
JP2009098715A (ja) * 2007-10-12 2009-05-07 Nec Corp 冗長システム装置並びに冗長システム装置におけるジョブの実行方法及び実行プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103973424A (zh) * 2014-05-22 2014-08-06 乐得科技有限公司 缓存系统中的故障解决方法和设备
CN103973424B (zh) * 2014-05-22 2017-12-29 网易乐得科技有限公司 缓存系统中的故障解决方法和设备
KR20160147947A (ko) * 2014-06-26 2016-12-23 인텔 코포레이션 로컬 캐시들을 갖는 메모리 캐시형 시스템들
JP2017527865A (ja) * 2014-06-26 2017-09-21 インテル・コーポレーション ローカルキャッシュを有するメムキャッシュドシステム
US10277707B2 (en) 2014-06-26 2019-04-30 Intel Corporation Memcached systems having local caches
KR102047037B1 (ko) * 2014-06-26 2019-11-20 인텔 코포레이션 로컬 캐시들을 갖는 메모리 캐시형 시스템들

Also Published As

Publication number Publication date
EP2435916B1 (en) 2019-03-20
US20100299553A1 (en) 2010-11-25
US20150169421A1 (en) 2015-06-18
US8972773B2 (en) 2015-03-03
CN101562543A (zh) 2009-10-21
JP5714571B2 (ja) 2015-05-07
HK1134727A1 (en) 2010-05-07
EP2435916A1 (en) 2012-04-04
CN101562543B (zh) 2013-07-31
US9317384B2 (en) 2016-04-19
WO2010138168A1 (en) 2010-12-02
EP2435916A4 (en) 2017-06-21

Similar Documents

Publication Publication Date Title
JP5714571B2 (ja) キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理
US9715522B2 (en) Information processing apparatus and control method
CN110297801B (zh) 基于容错fpga的事务系统的正好一次事务语义的系统和方法
WO2016070375A1 (zh) 一种分布式存储复制系统和方法
US9141449B2 (en) Managing remote procedure calls when a server is unavailable
US9659078B2 (en) System and method for supporting failover during synchronization between clusters in a distributed data grid
US8954391B2 (en) System and method for supporting transient partition consistency in a distributed data grid
US10382380B1 (en) Workload management service for first-in first-out queues for network-accessible queuing and messaging services
US20070061379A1 (en) Method and apparatus for sequencing transactions globally in a distributed database cluster
US9367261B2 (en) Computer system, data management method and data management program
US20090024869A1 (en) Autonomous Takeover Destination Changing Method in a Failover
US9319267B1 (en) Replication in assured messaging system
JP5292351B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
US20180314749A1 (en) System and method for partition-scoped snapshot creation in a distributed data computing environment
CN108512753B (zh) 一种集群文件系统中消息传输的方法及装置
US7904752B2 (en) Synchronizing device error information among nodes
US8036105B2 (en) Monitoring a problem condition in a communications system
EP3167372B1 (en) Methods for facilitating high availability storage services and corresponding devices
US7783931B2 (en) Alternate communication path between ESSNI server and CEC
US9002965B1 (en) Distribution of messages in nodes connected by a grid architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130515

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141014

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150311

R150 Certificate of patent or registration of utility model

Ref document number: 5714571

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250