説明

キャッシュクラウド構造を利用したキャッシュシステムおよびキャッシングサービスの提供方法

【課題】キャッシュクラウド構造を利用したキャッシュシステムおよびキャッシングサービスの提供方法を開示する。
【解決手段】キャッシュシステムは、複数のクライアントから受信したリクエストを複数のプロキシノードに分散して伝達するスイッチと、スイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達する複数のプロキシノードと、複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理する複数のキャッシュノードとを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュクラウド構造を利用したキャッシュシステムおよびキャッシングサービスの提供方法に関する。
【背景技術】
【0002】
従来技術に係るキャッシングソリューション(caching solution)において、クライアントは、それぞれが必要なすべてのキャッシュサーバ(cache server)に接続された構成を有する。このとき、キャッシュサーバに問題が発生すると、クライアント(client)が直接問題を把握し、独立的にキャッシュサーバリストを用いてハッシング(hashing)しなければならなかった。なお、ここでクライアントとは、キャッシングソリューションを用いるシステムを意味するものであり、例えば、一般的なウェブシステムでは、ウェブサーバやウェブアプリケーションサーバ(web application server、WAS)を意味するものであってもよい。
【0003】
従来技術によると、キャッシュサーバの問題をキャッシングソリューションを用いるクライアントが直接解決しなければならないため、クライアント全体に追加的機能を追加することのできるクライアント中心のフォールト・トレランス(fault−tolerance)が必要となるものであった。また、各クライアントが独立的にキャッシュサーバリストを保守(maintenance)する場合、分散ハッシュテーブルにおける整合性(consistency)の問題が発生することがあった。例えば、同じキー(key)に対するハッシュが、異なるキャッシュサーバにマッチングする虞があるという問題があった。
【0004】
したがって、より安全で効率的なキャッシュ技術の導入に対する要求が高まる傾向にあった。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、クライアントが、複数のキャッシュサーバの各々に個別的に接続する必要がなく、キャッシュクラウド(cache cloud)に接続してキャッシングサービスの提供を受けることのできるキャッシュシステムおよびキャッシングサービスの提供方法を提供する。
【0006】
また、本発明は、クライアントに別の構成を追加しなくとも、キャッシングサービスの提供を受けることができるキャッシュシステムおよびキャッシングサービスの提供方法を提供する。
【0007】
また、本発明は、プロキシサーバを用いてクライアントとキャッシュサーバとの間の障害が発生した場合にも整合性を保障できるキャッシュシステムおよびキャッシングサービスの提供方法を提供する。
【0008】
また、本発明は、別の管理構成によってキャッシュクラウドを管理することにより、キャッシュクラウドの拡張性をクライアントで考慮する必要がなく、当該管理構成を用いてプロキシサーバやキャッシュサーバの統計情報およびリソース状況をリアルタイムでモニタリングして障害の発生を予防し、サービス品質を持続的に向上させることができるキャッシュシステムおよびキャッシングサービスの提供方法を提供する。
【課題を解決するための手段】
【0009】
本発明の一実施形態によれば、複数のクライアントから受信したリクエストを複数のプロキシノードに分散して伝達するスイッチと、スイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達する複数のプロキシノードと、複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理する複数のキャッシュノードとを備えるキャッシュシステムが提供される。
【0010】
また、複数のプロキシノードの各々は、キャッシュサーバリストに基づいて少なくとも1つのキャッシュノードを選択し、キャッシュノードでリクエストを送信するプロキシサーバ、プロキシサーバのアプリケーションの初期化、開始および終了、モニタリング、およびHB(Heart Beat)のうち少なくとも1つを制御するノード制御部および当該プロキシノードのリソースをモニタリングして統計情報を生成する情報収集部を備えてもよい。
【0011】
また、複数のキャッシュノードの各々は、リクエストに伴うデータを格納し、または、リクエストに伴うデータを提供する複数のキャッシュサーバ、複数のキャッシュサーバの各々のアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部および前記キャッシュノードのリソースをモニタリングして統計情報を生成する情報収集部を備えてもよい。
【0012】
また、キャッシュシステムは、複数のプロキシノードと複数のキャッシュノードから受信されるデータに基づいて複数のプロキシノードおよび複数のキャッシュノードを管理する管理ノードをさらに備えてもよい。この場合、管理ノードは、複数のプロキシノードと複数のキャッシュノードがそれぞれ備えるノード制御部から受信された情報を管理制御部に伝達するメッセージ中継部と、メッセージ中継部を介して受信された情報に基づいて複数のプロキシノードと複数のキャッシュノードに対する状態を把握して、複数のプロキシノードと複数のキャッシュノードの各々に対する開始および終了命令を提供する管理制御部と、複数のプロキシノードと複数のキャッシュノードがそれぞれ備える情報収集部から受信された情報を用いて統計情報を生成するモニタリング部と、ネットワークを介して接続する管理者端末機と通信するユーザインターフェース部と、管理制御部およびモニタリング部で生成される情報を格納するデータベースとを備えてもよい。
【0013】
また、本発明の一実施形態によれば、スイッチからクライアントのリクエストを受信し、複数のキャッシュノードのうちキャッシュサーバリストに基づいて選択された少なくとも1つのキャッシュノードでリクエストを送信するプロキシサーバと、プロキシサーバのアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部と、システムリソースをモニタリングして統計情報を生成する情報収集部とを備えるプロキシシステムを提供する。
【0014】
また、本発明の一実施形態によれば、複数のクライアントから受信したリクエストを複数のコンボノードに分散して伝達するスイッチと、プロキシサーバと複数のキャッシュノードとをそれぞれ含み、スイッチから受信するリクエストをプロキシサーバを介して複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに伝達する複数のコンボノードとを備えるキャッシュシステムが提供される。
【0015】
また、本発明の一実施形態によれば、スイッチで複数のクライアントから受信したリクエストを複数のプロキシノードに分散して伝達するステッと、プロキシノードでスイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達するステップと、キャッシュノードで複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理するステップとを含むキャッシングサービスの提供方法を提供する。
【0016】
また、本発明の一実施形態によれば、スイッチで複数のクライアントから受信したリクエストを複数のコンボノードに分散して伝達するステップと、コンボノードでスイッチから受信するリクエストをコンボノードが備えるプロキシサーバを介してコンボノードに接続された複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに伝達するように制御するステップと、コンボノードで少なくとも1つのキャッシュサーバが伝達されたリクエストを処理するように制御するステップとを含むキャッシングサービスの提供方法を提供する。
【発明の効果】
【0017】
本発明によれば、クライアントが複数のキャッシュサーバの各々に個別的に接続する必要がなく、キャッシュクラウド(cache cloud)に接続することによりキャッシングサービスの提供を受けることができる。
【0018】
また、クライアントに別の構成を追加しなくとも、キャッシングサービスの提供を受けることができる。
【0019】
また、プロキシサーバを用いてクライアントとキャッシュサーバとの間の障害が発生した場合にも整合性を保障することができる。
【0020】
また、別の管理構成によってキャッシュクラウドを管理することにより、キャッシュクラウドの拡張性をクライアントで考慮する必要がなく、当該管理構成を用いてプロキシサーバやキャッシュサーバの統計情報およびリソース状況をリアルタイムでモニタリングして障害の発生を予防し、サービス品質を持続的に向上させることができる。
【図面の簡単な説明】
【0021】
【図1】本発明の一実施形態において、キャッシュシステムの概略構成を示す図である。
【図2】本発明の一実施形態に係るキャッシュシステムの内部構成を説明するためのブロック図である。
【図3】本発明の一実施形態に係るキャッシュシステムでコンシステントハッシングを保障するための方法を説明するための図である。
【図4】本発明の他の実施形態において、キャッシュシステムの概略構成を示す図である。
【図5】本発明の他の実施形態に係るキャッシュシステムの内部構成を説明するためのブロック図である。
【図6】本発明の一実施形態において、キャッシングサービスの提供方法を示すフローチャートである。
【図7】本発明の他の実施形態において、キャッシングサービスの提供方法を示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、本発明の実施形態を添付する図面を参照しながら詳細に説明する。
【0023】
本発明の実施形態に係るキャッシュシステムは、キャッシュ機能を速くかつ安全に提供するためのサービスであり、基本的にキャッシュクラウドコンピュータ形態で構成することができる。
【0024】
図1は、本発明の一実施形態において、キャッシュシステムの概略構成を示す図である。図1は、複数のクライアント110、キャッシュクラウド領域120、管理領域130、および管理者端末機140を示している。このとき、本実施形態に係るキャッシュシステムは、キャッシュクラウド領域120および管理領域130に含まれる構成を備えてもよい。ここで、キャッシュクラウド領域120は、スイッチ121、複数のプロキシノード122、および複数のキャッシュノード123を備えており、管理領域130は、管理制御部131、およびユーザインターフェース部132を備えている。
【0025】
まず、複数のクライアント110のうち1つのクライアントからスイッチ121を介して命令語が送信されると、このような命令語は複数のプロキシノード122のうち1つのプロキシノードを経て、複数のキャッシュノード123のうち少なくとも1つのキャッシュノードに伝達されて処理される。このとき、少なくとも1つのキャッシュノードで処理された結果は、複数のプロキシノード122のうち1つのプロキシノードとスイッチ121を経てクライアントに送信される。すなわち、複数のプロキシノード122は、情報の整合性のための中継の役割を担ってもよい。
【0026】
スイッチ121は、複数のプロキシノード122がそれぞれ備えるプロキシサーバに対する負荷を分散させて、ヘルスチェック(health check)を担う。
【0027】
また、管理領域130は、複数のプロキシノード122と複数のキャッシュノード123を管理してモニタリングすることによって、より容易にキャッシュシステムを管理できるように補助する役割を担う。このとき、管理領域130は、管理制御部131とユーザインターフェース部132とを少なくとも備えてもよい。管理制御部131とユーザインターフェース部132については、図2を参照してより詳しく説明する。
【0028】
図2は、本発明の一実施形態に係るキャッシュシステムの内部構成を説明するためのブロック図である。クライアント210は、メムキャッシュクライアント211を構成要素として備えてもよい。ここで、メムキャッシュクライアント211は、一例として、既存メムキャッシュ(memcached)サーバの利用のために用いられるクライアントプログラムを備えてもよい。すなわち、クライアント210は、別の構成を追加する必要がなく、本実施形態に係るキャッシュシステムを介してキャッシングサービスを利用することができる。
【0029】
スイッチ121は、上述したように複数のプロキシサーバに対する負荷を分散させてヘルスチェックを実行する。例えば、ヘルスチェックの周期を5秒に設定し、それ以上応答がないプロキシサーバは障害が発生したと判断してクライアントのリクエストや命令語などを伝達しないように設定する。
【0030】
図2においては、複数のプロキシノードのうち1つのプロキシノード220及び複数のキャッシュノードのうち1つのキャッシュノード230だけを具体化して図示している。実質的に、複数のプロキシノードと複数のキャッシュノードはそれぞれ互いに通信することができ、以下に説明する管理ノード240ともそれぞれ互いに通信することができる。しかし、図2では、説明の便宜上、プロキシノード220とキャッシュノード230をそれぞれ一つずつ用いてキャッシュシステムを説明する。
【0031】
複数のプロキシノードは、それぞれ複数のキャッシュノードのうち1つ以上のキャッシュノードと通信することができるが、図2では、説明の便宜上、プロキシノード220がスイッチ121を介してクライアントのリクエストを受信し、受信されたクライアントのリクエストを伝達するためにキャッシュノード230と通信する構成例を示している。
【0032】
プロキシノード220は、既存のキャッシュサーバ(本実施形態では、上述したメムキャッシュサーバ)のためのプロトコルをサポートして、クライアントが汎用的なメムキャッシュクライアント211をそのまま利用できるようにしてもよい。また、プロキシノード220は、コンシステントハッシング(consistent hashing)によってキャッシュデータの整合性を提供することができ、キャッシュノードの障害を処理することができる。コンシステントハッシングとキャッシュノードに対する障害処理については、以下により詳しく説明する。また、プロキシノード220は、関連するキャッシュノードを管理する統制サーバの役割も同時に担うことができる。すなわち、プロキシノード220のリソースに対する統計情報を提供し、リアルタイム負荷分散機能を提供することができる。
【0033】
このような機能の実行のために、プロキシノード220は、プロキシサーバ221、ノード制御部222、および情報収集部223を構成要素として備えてもよい。
【0034】
プロキシサーバ221は、スイッチ121を介して受信されるクライアントのリクエストを受けてキャッシュノード230のメムキャッシュ231に送信する。
【0035】
ノード制御部222は、プロキシサーバ221のアプリケーションの初期化、開始および終了、モニタリング、並びにHB(Heart Beat)を行う。ここで、HBは、物理的な装備とアプリケーションが正常に動作するかを周期的に確認する動作を意味する。すなわち、キャッシュシステムは、このようなノード制御部222を用いてプロキシサーバ221の中断なくキャッシュサーバを追加および削除することができる。例えば、障害が発生したキャッシュサーバのリアルタイムでの除去や、プロキシサーバの性能が閾値に到達した場合、キャッシュサーバの増設などの過程を柔軟に処理することができる。
【0036】
このとき、ノード制御部222は、管理制御部242から開始/中止/再開始命令を受信してプロキシプロセスを開始/中止/再開始してもよい。また、ノード制御部222は、プロキシサーバ221が備えるキャッシュサーバリストに新しいキャッシュサーバを追加したり、既存のキャッシュサーバを削除するための命令を管理制御部242を介して受信して処理してもよい。
【0037】
情報収集部223は、プロキシノード220のリソースをモニタリングする。このとき、モニタリングされた結果は、以下に説明する管理ノード240のモニタリング部243に送信してもよい。例えば、情報収集部223は、現在のプロキシノード220で複数のクライアントらから受信したすべてのリクエストの数とキャッシュノード230で応答を受けることが出来ないリクエストの数などの統計情報を、前記モニタリングされた結果として提供してもよい。
【0038】
キャッシュノード230は、複数のメムキャッシュサーバ231、ノード制御部232、および情報収集部233を構成要素として備えてもよい。
【0039】
複数のメムキャッシュ231は、それぞれキャッシュデータの格納領域として、キャッシュサーバを意味するものであってもよい。例えば、複数のメムキャッシュ231は、それぞれメムキャッシュサーバであってもよい。
【0040】
ノード制御部232は、キャッシュサーバのアプリケーションの初期化、開始および終了、モニタリング、並びにHBを行う。このとき、ノード制御部222は、管理制御部242から開始/中止/再開始命令を受信してキャッシュプロセスを開始/中止/再開始してもよい。
【0041】
情報収集部233は、キャッシュノード230のリソースをモニタリングする。この場合、モニタリングされた結果は管理ノード240のモニタリング部243に送信してもよい。
【0042】
管理ノード240は、メッセージ中継部241、管理制御部242、モニタリング部243、WAS(Web Application Server)244、RDB(Relational DataBase)245、およびRRD(Round Robin Database)246を備えてもよい。
【0043】
メッセージ中継部241は、プロキシノード220のノード制御部222およびキャッシュノード230のノード制御部232から送信される情報を受信して管理制御部242に送信する中継の役割を担ってもよい。
【0044】
管理制御部242は、メッセージ中継部241を介してノード制御部222,232で受信された情報によって各ノードの状態を把握し、各ノードに開始および終了の命令を下し、各ノードの統計情報を土台に各ノードのヘルスチェックを行う。また、必要に応じて、各ノードの交換もまた管理制御部242がチェックしてもよい。
【0045】
例えば、管理制御部242は、ノード制御部222,232に送信するHBを用いてプロキシノード220やキャッシュノード230の障害を探知して処理してもよい。障害の探知および処理については、以下により詳しく説明する。
【0046】
管理制御部242は、ノード制御部222,232に送信するQoS(Quality of Service)データと管理制御部242が測定するQoSデータを、モニタリング部243に送信してもよい。すなわち、プロキシノード220とキャッシュノード230のノード制御部222,232は、QoSデータを測定して周期的に管理制御部242に送信してもよく、管理制御部242はモニタリング部243にQoSデータを送信してもよい。ノード制御部222,232は、例えば、周期的に登録されたIPポートに「set」命令と「get」命令を送り、測定された命令の実行時間に基づいてQoSデータを生成してもよい。例えば、QoSデータはデータサイズ別の応答の速度情報を含んでもよい。
【0047】
また、管理制御部242は、管理者から受信されるプロキシノード220やキャッシュノード230の開始/中止/再開始命令を処理してもよい。管理制御部242は、プロキシノード220およびキャッシュノード230のノード制御部222,232で開始/中止/再開始をリクエストしてもよい。
【0048】
モニタリング部243は、上述したように情報収集部223,233からプロキシノード220とキャッシュノード230のリソースに対するモニタリングされた結果を受信して統計情報を生成してもよい。例えば、モニタリング部243は、プロキシノード220とキャッシュノード230の情報収集部223,233からリソースデータを受信してもよく、このようなリソースデータを分析してRRD246に格納してもよい。
【0049】
また、モニタリング部243は、管理制御部242から受信されたQoSデータを分析してQoSデータの大きさに応じてRRD246に格納してもよい。
【0050】
WAS244は、管理者と通信するためのユーザインターフェースを提供するためのものであり、図1で説明したユーザインターフェース部132に対応してもよい。すなわち、管理者は、管理者端末機とウェブを介してWAS244に接続してプロキシサーバ220とキャッシュサーバ230をモニタリングして、管理することができる。管理者やユーザには、例えば、キャッシュシステム、プロキシノード220、キャッシュノード230のQoS結果、プロキシノード220及びキャッシュノード230のCPU、ネットワーク、ディスクなどのシステムリソース、プロキシサーバ221の使用量情報などを提供することができる。
【0051】
RDB245およびRRD246は、それぞれ管理制御部242およびモニタリング部243が収集したデータを格納するデータベースを意味する。
【0052】
図3は、本発明の一実施形態に係るキャッシュシステムでコンシステントハッシングを保障するための方法を説明するための図である。第1点線ボックス310は、ノード1〜ノード4の4つのノードと4つの各ノードが備えるキーインデックスを示している。ここで、それぞれのノードは、キャッシュノードを意味してもよく、それぞれのキーは、特定ハッシュ関数によって生成されてもよい。このとき、ノード4に障害が発生した場合、キー「jkl」、「jkm」および「jkn」を利用できなくなり、ハッシュ値が不一致する。第2点線ボックス320は、ノード1〜ノード3の3つのノードと3つの各ノードが備えるキーインデックスを示している。すなわち、キー「jkl」、「jkm」および「jkn」が3つのノードに分散して格納されたことを示している。このように、キャッシュシステムのプロキシノードは、障害が発生したキャッシュノードのキーをノードに分散して格納することによって、コンシステントハッシングを保障することができる。
【0053】
上述したように、従来のメムキャッシュクライアントとメムキャッシュサーバの形態では、サーバの障害がすぐにクライアントの障害に広がり得る。しかし、本実施形態では、プロキシサーバを中間媒介として用いて、障害に対してより安定して対処することができる。
【0054】
例えば、クライアントは、「get」命令によってキャッシュサーバに作業をリクエストし、一定期間後にも応答がない場合、キャッシュミス(cache miss)が発生し、データ格納(「set」命令などを用いて)作業をリクエストし、一定期間後にも応答がない場合、サーバエラーを発生させる。このとき、プロキシノードとキャッシュノードのノード制御部は、キャッシュサーバの状態を検出し、障害が発生したキャッシュサーバを除去した後の他のキャッシュサーバにおいて、キャッシングサービスを持続的に処理するように制御してもよい。
【0055】
他の例として、プロキシサーバは、キャッシュサーバの障害を検出した瞬間から予め選定された第1期間の間に、予め選定された第2期間ごとにキャッシュサーバの状態を確認してもよい。例えば、プロキシサーバは、10分の間2秒間隔でキャッシュサーバの状態を確認してもよい。このとき、10分以内にキャッシュサーバの状態が正常に戻る場合、プロキシサーバはキャッシュサーバを自動的に接続させてクライアントに正常にサービスが提供できるように制御してもよい。このような状況は、キャッシュノードのノード制御部でも処理されるが、ノード制御部が検出できない場合、例えばプロキシノードとキャッシュノードの間のネットワーク問題によって一時的に接続が切れる状況においては、プロキシサーバが自主的なヘルスチェックによって障害を処理することができる。
【0056】
図4は、本発明の他の実施形態において、キャッシュシステムの概略構成を示す図である。図4は、複数のクライアント410、キャッシュクラウド領域420、管理領域430および、管理者端末機440を示している。このとき、本実施形態に係るキャッシュシステムは、キャッシュクラウド領域420および管理領域430に含まれる構成を備えることができる。
【0057】
ここで、キャッシュクラウド領域420は、スイッチ421および複数のコンボノードを備えることができる。図4では、複数のコンボノードのうちコンボノード1 431とコンボノードN 432を具体的に示している。このとき、それぞれのコンボノードはプロキシサーバ、複数のキャッシュサーバ、ノード制御部、および情報収集部を備えてもよい。図4において、三角形の図形はプロキシサーバを、円筒形の図形はキャッシュサーバをそれぞれ示している。そして、「N」が書かれた円形図はノード制御部を、「C」が書かれた円形図は情報収集部をそれぞれ示している。
【0058】
また、管理領域430は、管理制御部とユーザインターフェース部とを備えてもよい。このとき、図4で「AC」が書かれた円形図は管理制御部を、「UI」が書かれた円形図はユーザインターフェース部をそれぞれ意味している。
【0059】
本実施形態に係るキャッシュシステムは、図1および2で説明したキャッシュシステムとは異なり、プロキシサーバとキャッシュサーバを1つのコンボノードで構成する。
【0060】
このとき、複数のクライアント410のうち1つのクライアントからスイッチ421を介して命令語が送信されれば、このような命令語は複数のコンボノードのうち1つのコンボノードに伝達されて処理されることができる。1つのコンボノード内では、プロキシサーバが命令語を受信して複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに命令語を伝達することができ、命令語を受信したキャッシュサーバは受信された命令語によってデータを格納または提供することができる。少なくとも1つのキャッシュノードで処理された結果は、プロキシサーバとスイッチ421を経て当該クライアントに送信される。このとき、プロキシサーバは情報の整合性のための中継の役割のために用いられてもよい。
【0061】
スイッチ421は、複数のコンボノードの各々が備えるプロキシサーバに対する負荷を分散させて、ヘルスチェックを行う。
【0062】
また、管理領域430は、複数のコンボノードを管理してモニタリングすることによって、より容易にキャッシュシステムを管理できるように補助する役割を担ってもよい。
【0063】
図5は、本発明の他の実施形態に係るキャッシュシステムの内部構成を説明するためのブロック図である。まず、クライアント510は、メムキャッシュクライアント511を構成要素として備えてもよい。ここで、メムキャッシュクライアント511は一例として、既存メムキャッシュ(memcached)サーバを利用するために用いられるクライアントプログラムを備えてもよい。すなわち、クライアント510は、別の構成を追加する必要がなく、本実施形態に係るキャッシュシステムを介してキャッシングサービスを利用してもよい。
【0064】
スイッチ421は、上述したように複数のコンボノードの各々が備えるプロキシサーバに対する負荷を分散させてヘルスチェックを実行する。例えば、ヘルスチェックの周期を5秒に設定し、それ以上応答がないプロキシサーバは、障害が発生したと判断してクライアントのリクエストや命令語などを伝達しないように設定してもよい。
【0065】
このとき、図5においては、複数のコンボノードのうちコンボノードN432だけを具体化して示している。図5を参照し、説明の便宜上、コンボノードN432を中心にキャッシングサービスについて説明する。
【0066】
コンボノードN432は、既存のキャッシュサーバ(本実施形態では、上述したメムキャッシュサーバ)のためのプロトコルをサポートしてクライアントが汎用的なメムキャッシュクライアント511をそのまま利用できるようにしてもよい。また、コンボノードN432は、プロキシサーバ520を用いたコンシステントハッシングによって、キャッシュデータの整合性を提供することができ、キャッシュノードの障害を処理することができる。コンシステントハッシングとキャッシュノードの障害処理については、すでに詳しく説明し、本実施形態においても同一の方法を用いるため、繰り返しの説明は省略する。このとき、プロキシサーバ520は、関連するキャッシュノードを管理する統制サーバの役割も同時に担うことができる。また、コンボノードN432は、プロキシサーバ520とキャッシュサーバの複数のメムキャッシュ530の各々のリソースに対する統計情報を提供し、リアルタイム負荷分散機能を提供してもよい。
【0067】
このような機能を実行するために、コンボノードN432は、プロキシサーバ520、複数のメムキャッシュ530、ノード制御部540、および情報収集部550を構成要素として備えてもよい。
【0068】
プロキシサーバ520は、スイッチ421を介して受信されるクライアントのリクエストを受けてメムキャッシュ530に送信する。
【0069】
複数のメムキャッシュ530の各々は、キャッシュデータの格納領域として、キャッシュサーバを意味するものであってもよい。例えば、複数のメムキャッシュ530の各々は、メムキャッシュサーバであってもよい。このとき、プロキシサーバ520からクライアントのリクエストを伝達されたキャッシュサーバは、リクエストと関連する命令語によってキャッシュデータを格納したり提供したりすることができる。
【0070】
ノード制御部540は、コンボノードN432のアプリケーションの初期化、開始および終了、モニタリング、並びにHBを行うことができる。すなわち、キャッシュシステムは、このようなノード制御部540を用いてプロキシサーバ520の中断なくキャッシュサーバを追加および削除することができる。例えば、障害が発生したキャッシュサーバのリアルタイムでの除去およびプロキシサーバの性能が閾値が到達した場合、キャッシュサーバの増設などの過程を柔軟に処理することができる。
【0071】
このとき、ノード制御部540は、管理ノード560から開始/中止/再開始命令を受信してプロキシプロセスを開始/中止/再開始してもよい。また、ノード制御部540は、プロキシサーバ520が備えるキャッシュサーバリストに新しいキャッシュサーバを追加したり、既存キャッシュサーバを削除するための命令を管理ノード560を介して受信して削除処理をしてもよい。管理ノード560は、図2に図示したようにプロキシノード220およびキャッシュノード230と通信するためではなく、図5に図示したように複数のコンボノードと通信し、複数のコンボノードと通信するという点を除いては、図2によって説明した管理ノード240と同じように動作し得るため、繰返しの説明は省略する。
【0072】
情報収集部550は、コンボノードN432のリソースをモニタリングする。このとき、モニタリングされた結果は、以下にて説明する管理ノード560に送信してもよい。例えば、情報収集部550は、現在のプロキシサーバ520で複数のクライアントらから受信したすべてのリクエストの数と、複数のメムキャッシュ530で応答を受けることが出来ないリクエストの数などの統計情報を、モニタリングされた結果として提供してもよい。
【0073】
なお、図5の説明において省略された内容は、図1〜図4に示した構成と同様の構成に関するものであるため、図1〜図4の説明を参照するものとする。
【0074】
図6は、本発明の一実施形態において、キャッシングサービスの提供方法を示すフローチャートである。本実施形態に係るキャッシングサービスの提供方法は、図2を介して説明したキャッシュシステムによって行なうことができる。図6を参照し、キャッシュシステムの備える構成において、それぞれのステップを行う過程を説明することによってキャッシングサービスの提供方法を説明する。
【0075】
ステップ610において、キャッシュシステムは、スイッチで複数のクライアントから受信したリクエストを、複数のプロキシノードに分散して伝達する。まず、複数のクライアントは、それぞれ、メムキャッシュクライアントのように、従来のキャッシュサーバを用いるために用いられるクライアントプログラムをそのまま利用してもよい。クライアントは別の構成を追加する必要がなく、本実施形態に係るキャッシュシステムを介してキャッシングサービスの提供を受けることができる。スイッチは、複数のプロキシサーバに対する負荷を分散させてヘルスチェックを担当する。例えば、ヘルスチェックの周期を5秒に設定し、それ以上応答がないプロキシサーバは、障害が発生したと判断してクライアントのリクエストや命令語などを伝達しない。
【0076】
ステップ620において、プロキシノードは、スイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達する。複数のプロキシノードは、それぞれ、複数のキャッシュノードのうち1つ以上のキャッシュノードと通信してもよい。すなわち、プロキシノードは、既存キャッシュサーバのためのプロトコルをサポートしてクライアントが汎用的なメムキャッシュクライアントをそのまま利用できるようにしてもよい。
【0077】
ここで、プロキシノードは、コンシステントハッシングによってキャッシュデータの整合性を提供することができ、キャッシュノードの障害を処理することができる。また、プロキシノードは、関連するキャッシュノードを管理する統制サーバの役割も同時に行うことができる。すなわち、プロキシノードは、リソースに対する統計情報を提供し、リアルタイム負荷分散機能を提供することができる。
【0078】
ステップ630において、キャッシュノードは、複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理する。このとき、各キャッシュノードはキャッシュデータの格納領域の複数のキャッシュサーバを備えてもよい。すなわち、キャッシュノードは、ステップ630で受信したリクエストによってキャッシュデータを格納または提供することができる。
【0079】
図7は、本発明の他の実施形態において、キャッシングサービスの提供方法を示すフローチャートである。本実施形態に係るキャッシングサービスの提供方法は、図5によって説明したキャッシュシステムによって行なうことができる。図7を参照し、キャッシュシステムの備える構成において、それぞれのステップを行う過程を説明することによってキャッシングサービスの提供方法を説明する。
【0080】
ステップ710において、スイッチは、複数のクライアントから受信したリクエストを複数のコンボノードに分散して伝達する。まず、複数のクライアントは、それぞれ、メムキャッシュクライアントのように従来のキャッシュサーバを用いるために用いられるクライアントプログラムをそのまま利用してもよい。クライアントは、別の構成を追加する必要がなく、本実施形態に係るキャッシュシステムを介してキャッシングサービスの提供を受けることができる。スイッチは、複数のプロキシサーバに対する負荷を分散してヘルスチェックを担当する。例えば、ヘルスチェックの周期を5秒に設定し、それ以上応答がないプロキシサーバは、障害が発生したと判断してクライアントのリクエストや命令語などを伝達しない。
【0081】
ステップ720において、コンボノードはスイッチから受信するリクエストをコンボノードが備えるプロキシサーバを介してコンボノードに接続された複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに伝達するように制御する。すなわち、コンボノードは、プロキシサーバと複数のキャッシュサーバを備えることができる。このとき、コンボノードは、プロキシサーバを介してリアルタイム負荷分散機能を提供することができ、複数のキャッシュサーバに対するコンシステントハッシングを保障することができる。また、キャッシュサーバの障害を処理することもできる。
【0082】
このようなコンボノードは、コンボノードのアプリケーションの初期化、開始および終了、モニタリング、並びにHBを行うノード制御部と、コンボノードのリソースをモニタリングして統計情報を生成する情報収集部とをさらに備えてもよく、キャッシュシステムが管理ノードをさらに備える場合、管理ノードとの通信によって統計情報を提供したり当該コンボノードの状態の情報を提供することができる。
【0083】
ステップ730において、キャッシュシステムは、コンボノードで少なくとも1つのキャッシュサーバが伝達されたリクエストを処理するように制御する。すなわち、キャッシュサーバは、伝達されたリクエストによってキャッシュデータを格納したり、または、提供することができる。
【0084】
図6および図7の説明において省略した内容は、図1〜図5を参照するものとする。
【0085】
このように、本発明の実施形態によれば、クライアントが複数のキャッシュサーバの各々に個別的に接続する必要がなく、キャッシュクラウド(cache cloud)に接続してキャッシングサービスを提供することができ、クライアントで別の構成を追加しなくとも、キャッシングサービスの提供を受けることができる。また、プロキシサーバを用いてクライアントとキャッシュサーバとの間の障害が発生した場合にも整合性を保障することができる。それだけでなく、別の管理構成によってキャッシュクラウドを管理することによって、キャッシュクラウドの拡張性をクライアントで考慮する必要がなく、当該管理構成を用いてプロキシサーバやキャッシュサーバの統計情報およびリソース状況をリアルタイムでモニタリングして障害の発生を予防し、サービス品質を持続的に向上させることができる。
【0086】
本発明に係る実施形態は、多様なコンピュータ手段によって行われることができるプログラム命令形態で実現され、コンピュータ読み出し可能媒体に記録されてもよい。前記記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせたものを含んでもよい。前記記録媒体及びプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。また、上述したファイルシステムは、コンピュータ読み出しが可能な記録媒体に記録することができる。
【0087】
上述したように本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【0088】
したがって、本発明の範囲は、開示された実施形態に限定されて定められるものではなく、特許請求の範囲及び特許請求の範囲と均等なものなどによって定められるものである。
【符号の説明】
【0089】
110:複数のクライアント
120:キャッシュクラウド領域
121:スイッチ
122:複数のプロキシノード
123:複数のキャッシュノード
130:管理領域

【特許請求の範囲】
【請求項1】
複数のクライアントから受信したリクエストを複数のプロキシノードに分散して伝達するスイッチと、
前記スイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達する前記複数のプロキシノードと、
前記複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理する前記複数のキャッシュノードと、
を備えることを特徴とするキャッシュシステム。
【請求項2】
前記複数のプロキシノードの各々は、
キャッシュサーバリストに基づいて前記少なくとも1つのキャッシュノードを選択し、前記キャッシュノードで前記リクエストを送信するプロキシサーバと、
前記プロキシサーバのアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部と、
前記プロキシノードのリソースをモニタリングして統計情報を生成する情報収集部と、
を備えることを特徴とする請求項1に記載のキャッシュシステム。
【請求項3】
前記ノード制御部は、
開始、中止、および再開始命令を受信して前記プロキシサーバのプロセスを開始、中止、および再開始することを特徴とする請求項2に記載のキャッシュシステム。
【請求項4】
前記ノード制御部は、
キャッシュサーバ追加/削除命令に基づいて、前記キャッシュサーバリストにキャッシュサーバを追加し、または、前記キャッシュサーバリストからキャッシュサーバを削除することを特徴とする請求項2に記載のキャッシュシステム。
【請求項5】
前記情報収集部は、
前記複数のクライアントから前記プロキシノードに送信されたすべてのリクエストの数と、前記複数のキャッシュノードのうち前記リクエストを伝達したキャッシュノードから応答を受けることが出来ないリクエストの数のうち少なくとも1つに関する情報を統計情報として生成することを特徴とする請求項2に記載のキャッシュシステム。
【請求項6】
前記複数のキャッシュノードの各々は、
前記リクエストに応じてデータを格納し、または、前記リクエストに応じてデータを提供する複数のキャッシュサーバと、
前記複数のキャッシュサーバの各々のアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部と、
前記キャッシュノードのリソースをモニタリングして統計情報を生成する情報収集部と、
を備えることを特徴とする請求項1に記載のキャッシュシステム。
【請求項7】
前記ノード制御部は、
予め選定された命令の実行時間に基づいて、データサイズ別の応答速度を測定することを特徴とする請求項2または請求項6に記載のキャッシュシステム。
【請求項8】
前記HBは、物理的な装備とアプリケーションが正常に動作するかを周期的に確認する動作を備えることを特徴とする請求項2または請求項6に記載のキャッシュシステム。
【請求項9】
前記複数のプロキシノードと前記複数のキャッシュノードから受信されるデータに基づいて、前記複数のプロキシノードおよび前記複数のキャッシュノードを管理する管理ノードをさらに備えることを特徴とする請求項1に記載のキャッシュシステム。
【請求項10】
前記管理ノードは、
前記複数のプロキシノードと前記複数のキャッシュノードとがそれぞれ備えるノード制御部から受信された情報を管理制御部に伝達するメッセージ中継部と、
前記メッセージ中継部を介して受信された情報に基づいて前記複数のプロキシノードと前記複数のキャッシュノードに対する状態を把握して、前記複数のプロキシノードと前記複数のキャッシュノードの各々に対する開始および終了命令を提供する前記管理制御部と、
前記複数のプロキシノードと前記複数のキャッシュノードとがそれぞれ備える情報収集部から受信された情報を用いて統計情報を生成するモニタリング部と、
ネットワークを介して接続する管理者端末機と通信するユーザインターフェース部と、
前記管理制御部および前記モニタリング部で生成される情報を格納するデータベースと、
を備えることを特徴とする請求項9に記載のキャッシュシステム。
【請求項11】
前記管理制御部は、
前記複数のプロキシノードと前記複数のキャッシュノードとがそれぞれ備えるノード制御部を介して受信されるデータサイズ別の応答速度に関する情報および前記管理制御部が測定するデータサイズ別の応答速度に関する情報を前記モニタリング部に送信することを特徴とする請求項10に記載のキャッシュシステム。
【請求項12】
前記モニタリング部は、
前記管理制御部から受信されるデータサイズ別の応答速度に関する情報をデータの大きさにより前記データベースに格納することを特徴とする請求項11に記載のキャッシュシステム。
【請求項13】
前記管理制御部は、
前記ユーザインターフェース部を介して受信される前記管理者端末機の命令に基づいて前記複数のプロキシノードと前記複数のキャッシュノードの各々に対する開始および終了命令を提供することを特徴とする請求項10に記載のキャッシュシステム。
【請求項14】
スイッチからクライアントのリクエストを受信し、複数のキャッシュノードのうちキャッシュサーバリストに基づいて選択された少なくとも1つのキャッシュノードで前記リクエストを送信するプロキシサーバと、
前記プロキシサーバのアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部と、
システムリソースをモニタリングして統計情報を生成する情報収集部と、
を備えることを特徴とするプロキシシステム。
【請求項15】
前記ノード制御部は、
キャッシュサーバ追加/削除命令に基づいて、キャッシュサーバリストにキャッシュサーバを追加し、または、前記キャッシュサーバリストからキャッシュサーバを削除することを特徴とする請求項14に記載のプロキシシステム。
【請求項16】
複数のクライアントから受信したリクエストを複数のコンボノードに分散して伝達するスイッチと、
プロキシサーバと複数のキャッシュサーバの各々を含み、前記スイッチから受信するリクエストを前記プロキシサーバを介して前記複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに伝達する前記複数のコンボノードと、
を備えることを特徴とするキャッシュシステム。
【請求項17】
前記複数のコンボノードの各々は、
前記コンボノードのアプリケーションの初期化、開始および終了、モニタリング、並びにHBのうち少なくとも1つを制御するノード制御部と、
前記コンボノードのリソースをモニタリングして統計情報を生成する情報収集部と、
をさらに備えることを特徴とする請求項16に記載のキャッシュシステム。
【請求項18】
スイッチで複数のクライアントから受信したリクエストを複数のプロキシノードに分散して伝達するステップと、
プロキシノードで前記スイッチから受信するリクエストを複数のキャッシュノードのうち少なくとも1つのキャッシュノードに伝達するステップと、
キャッシュノードで前記複数のプロキシノードのうち少なくとも1つのプロキシノードから受信したリクエストを処理するステップと、
を含むことを特徴とするキャッシングサービスの提供方法。
【請求項19】
スイッチで複数のクライアントから受信したリクエストを複数のコンボノードに分散して伝達するステップと、
前記コンボノードで前記スイッチから受信するリクエストを前記コンボノードが備えるプロキシサーバを介して前記コンボノードに接続された複数のキャッシュサーバのうち少なくとも1つのキャッシュサーバに伝達するように制御するステップと、
前記コンボノードで前記少なくとも1つのキャッシュサーバが前記伝達されたリクエストを処理するように制御するステップと、
を含むことを特徴とするキャッシングサービスの提供方法。
【請求項20】
請求項18または請求項19に記載の方法を行うプログラムを記録したことを特徴とするコンピュータ読み出し可能記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−59257(P2012−59257A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2011−187033(P2011−187033)
【出願日】平成23年8月30日(2011.8.30)
【出願人】(505205812)エヌエイチエヌ コーポレーション (408)
【Fターム(参考)】