JP5655044B2 - Data cache system - Google Patents
Data cache system Download PDFInfo
- Publication number
- JP5655044B2 JP5655044B2 JP2012198059A JP2012198059A JP5655044B2 JP 5655044 B2 JP5655044 B2 JP 5655044B2 JP 2012198059 A JP2012198059 A JP 2012198059A JP 2012198059 A JP2012198059 A JP 2012198059A JP 5655044 B2 JP5655044 B2 JP 5655044B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache manager
- cache
- cluster
- server
- 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.)
- Active
Links
Images
Description
本発明は、CPU(Central Processing Unit)内のL1(level 1)/L2(level 2)キャッシュや、CPU−メモリ間に階層的に設置されるキャッシュ等の所謂キャッシュ一般の技術分野に属し、また、NW(Network)を介してキャッシュ機構が情報の送受信を実行するため、Web上のHTTP(HyperText Transfer Protocol)データ等のキャッシュ技術の分野にも属する。さらに、キャッシュ機構をクラスタ構成にすることを前提としているため、分散データベースやMapReduce等の分散処理技術の分野にも属する。 The present invention belongs to a so-called general technical field of a cache such as an L1 (level 1) / L2 (level 2) cache in a CPU (Central Processing Unit), a cache installed hierarchically between CPUs and memories, and the like. Since the cache mechanism executes transmission / reception of information via NW (Network), it belongs to the field of cache technology such as HTTP (HyperText Transfer Protocol) data on the Web. Furthermore, since it is assumed that the cache mechanism has a cluster configuration, it also belongs to the field of distributed processing technologies such as distributed databases and MapReduce.
従来からCPU内のL1/L2キャッシュにおいて、Read/Writeキャッシュ技術が存在していたが、近年Multi-CPUやMulti-Core化が普及するようになったため、複数のキャッシュ主体が存在するようになり、MESIプロトコル(非特許文献1参照)をベースとした様々なアルゴリズムが提案されてきた。 Conventionally, read / write cache technology has existed for L1 / L2 caches in CPUs. However, since multi-CPUs and multi-cores have become widespread in recent years, there are multiple cache entities. Various algorithms based on the MESI protocol (see Non-Patent Document 1) have been proposed.
しかし、CPU側のキャッシュ機構は、バススヌープ(bus snoop)監視を基にした更新検知を前提としており、NW環境においてそのままでは適用できない。何処かの特定サーバ等に更新通知を集め、それを監視することも想定されるが、容易にボトルネックとなるため現実的でないという問題があった。 However, the cache mechanism on the CPU side assumes update detection based on bus snoop monitoring and cannot be applied as it is in an NW environment. It is assumed that update notifications are collected and monitored at some specific server or the like, but there is a problem that it is not realistic because it easily becomes a bottleneck.
このため、NW環境におけるキャッシュ機構では、DNS(Domain Name System)等のように、TTL(Time To Live)値による寿命内はクライアント側で持っている情報をそのまま使用することで、サーバ側の負荷を低減可能とすると同時に応答時間も大幅に短縮可能とする方式、または、HTML(HyperText Markup Language)データ取得の際のように、データに変更がない場合には、Not Modifiedを受け取り、クライアント側で持っているデータをそのまま使用することで、サーバ側の負荷を低減可能とする方式、が一般的に利用されてきた。 For this reason, the cache mechanism in the NW environment uses the information on the client side as it is within the lifetime based on the TTL (Time To Live) value, such as DNS (Domain Name System). Can be reduced at the same time as the response time can be greatly shortened, or when there is no change in the data as in the case of HTML (HyperText Markup Language) data acquisition, Not Modified is received and the client side A method that can reduce the load on the server side by using the existing data as it is has been generally used.
しかしながら、TTL値を利用したキャッシュ機構では、クライアント側で持っている情報を、TTL値の寿命まで更新しないことは更新反映の契機に制限を加えることになり、一方、TTL値の寿命の途中で更新を実行すると、一貫性の維持を犠牲にせざるを得ないという問題があった。また、Not Modified応答に関しては、確かにデータサイズが数十MB程度の大きなデータの場合は、サーバ負荷を軽減する効果があるが、通信処理のように扱うデータサイズが数kB程度の小さなデータの場合は効果が小さい上、NWを介して応答自体は返すことになるため、応答時間はほとんど短縮できないという問題があった。 However, in the cache mechanism using the TTL value, not updating the information held on the client side until the lifetime of the TTL value imposes a limit on the trigger of the update reflection, while in the middle of the lifetime of the TTL value. When updating, there was a problem that the maintenance of consistency had to be sacrificed. Regarding the Not Modified response, if the data size is certainly large, such as several tens of MB, there is an effect of reducing the server load, but the data size handled as in communication processing is small, such as several kilobytes. In this case, the effect is small and the response itself is returned via the NW, so that there is a problem that the response time can hardly be shortened.
これに対し、JBossCache(非特許文献2参照)の技術では、クライアントのアプリケーションで専用のキャッシュインスタンスを保持し、そのアプリケーションにおいてキャッシュインスタンス経由でデータが更新された際に、このキャッシュインスタンスが他のクライアントのキャッシュインスタンスに自動的に更新通知を実行することで、CPUでのキャッシュコヒーレンスに近い挙動を実現することが可能となる。 On the other hand, in the technology of JBossCache (see Non-Patent Document 2), a dedicated cache instance is held in a client application, and when the data is updated via the cache instance in the application, this cache instance is transferred to another client. It is possible to realize behavior close to cache coherence in the CPU by automatically performing update notification to the cache instance.
しかしながら、JBossCacheのような機構では、クライアントにデータが固定的に割り当てられている。これに対し、本発明では、クライアント側が複数のサーバからなるクラスタ構成であり、サーバの故障や増設に伴ってデータの割り当て先が変更されるような方式を前提としており、その場合、以下のような問題(1)および(2)がある。
(1)クラスタ自身がNAT(Network Address Translation)等で内部のサーバを隠蔽していることが多いため、外部からクラスタ内部のサーバへ更新通知を送信しにくい。
この点に関し、キャッシュデータを取得するために接続した際に張ったセッション(穴)を継続しておき、そのセッション(穴)を流用することが想定される。しかしながら、この方式では、クライアント側のクラスタ構成がサーバの故障や増設で変化し、セッションが切断された場合に対応することができない。また、キャッシュデータの呼出先となるクラスタが同様に変化した際のセッション切断の場合も、更新通知のための穴が消失してしまうため、対応することができない。
(2)クラスタ自体の内部で、故障や増設等の原因でサーバの構成が変化してしまうと、参照や更新対象のデータが他のサーバに移動してしまい、移動先の正しい保存先に参照要求や更新通知を送信することが困難になる。
However, in mechanisms such as JBossCache, data is permanently assigned to clients. On the other hand, in the present invention, the client side has a cluster configuration composed of a plurality of servers, and assumes a method in which the data allocation destination is changed due to a server failure or expansion. There are problems (1) and (2).
(1) Since the cluster itself often conceals the internal server by NAT (Network Address Translation) or the like, it is difficult to send an update notification from the outside to the internal server.
In this regard, it is assumed that a session (hole) stretched when connecting to acquire cache data is continued and the session (hole) is diverted. However, this method cannot cope with a case where the client side cluster configuration changes due to a server failure or expansion, and the session is disconnected. Also, in the case of session disconnection when the cluster to which the cache data is called changes in the same manner, the hole for update notification disappears and cannot be handled.
(2) If the server configuration changes due to a failure or expansion within the cluster itself, the data to be referenced or updated will be moved to another server and referenced to the correct destination of the destination. It becomes difficult to send requests and update notifications.
このような背景に鑑みて本発明がなされたのであり、本発明は、呼出元(クライアント)および呼出先(原本データの保存サーバ)のクラスタ構成を互いに隠蔽したまま、キャッシュデータの情報の更新を通知し合うことが可能となるデータキャッシュシステムを提供することを課題とする。 The present invention has been made in view of such a background, and the present invention updates cache data information while concealing the cluster configuration of the caller (client) and callee (original data storage server) from each other. It is an object of the present invention to provide a data cache system that can notify each other.
前記した課題を解決するため、請求項1に記載の発明は、データをキャッシュデータとして記憶する複数のサーバがクラスタを構成するクライアントクラスタと、前記キャッシュデータの原本の前記データを記憶する複数のサーバがクラスタを構成する原本データクラスタとがネットワークを介して接続されるデータキャッシュシステムであって、前記クライアントクラスタが備えるサーバである第1のサーバ、および、前記原本データクラスタが備えるサーバである第2のサーバ、それぞれが、(1)前記データに固有な識別子および当該データの原本データを保存する前記原本データクラスタのアドレスで構成されるデータkeyと、前記データの読み出し処理および書き込み処理を実行するキャッシュマネージャに固有な識別子および当該キャッシュマネージャが属する前記クライアントクラスタまたは前記原本データクラスタを示すクラスタのアドレスで構成されるキャッシュマネージャkeyを用いて、前記データの読み出し権限および書き込み権限を持つキャッシュマネージャが格納されるメタデータと、が付された前記データ、および(2)前記データkeyと、各クラスタ内のサーバに設定された複数のキャッシュマネージャそれぞれの固有な識別子とを対応付けたキャッシュデータ管理情報、を記憶する記憶部と、前記データに付されたデータkeyを抽出し、前記キャッシュデータ管理情報を参照して、当該データに対応する前記キャッシュマネージャを決定する振り分け処理部と、前記キャッシュマネージャと、を備え、前記第1のサーバのキャッシュマネージャが、前記データの参照要求を受信した場合に、自身の前記記憶部に当該データを記憶しているか否かを、前記参照要求に付された前記データkeyを用いて探索し、前記データを記憶していない場合に、当該データkeyから前記原本データクラスタのアドレスを抽出し、当該データの前記データkeyおよび当該キャッシュマネージャの前記キャッシュマネージャkeyを付した取得要求を前記原本データクラスタへの第1の要求メッセージに含めて送信し、前記第2のサーバの振り分け処理部は、受信した前記第1の要求メッセージから前記データkeyを抽出し、前記データに対応する原本データを記憶する前記キャッシュマネージャを、前記キャッシュデータ管理情報を参照して決定し、前記決定したキャッシュマネージャに前記第1の要求メッセージを送信し、前記第1の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がある場合に、前記第1の要求メッセージから前記キャッシュマネージャkeyを抽出し、当該データのメタデータの読み出し権限に前記抽出したキャッシュマネージャkeyを付した上で、当該キャッシュマネージャkeyから前記クライアントクラスタのアドレスを抽出し、前記データを前記第1のサーバのキャッシュマネージャに送信し、前記第1のサーバのキャッシュマネージャは、前記データを受信して自身の記憶部に記憶し、当該データを出力することを特徴とするデータキャッシュシステムとした。
In order to solve the above problem, the invention according to
このようにすることで、クライアントクラスタが備える第1のサーバのキャッシュマネージャが、参照要求を受けたデータを記憶していない場合に、原本データクラスタが備える第2のサーバの、当該データの原本データを記憶し、かつ、書き込み権限を持つキャッシュマネージャから、読み出し権限を得た上でそのデータを受信し、自身の記憶部に記憶することができる。
このとき、クライアントクラスタが備える第1のサーバは、原本データクラスタのアドレス宛に第1の要求メッセージを送信すればよく、原本データクラスタ内の第2のサーバの構成は隠蔽されたままでよい。第1の要求メッセージを受信した第2のサーバの振り分け処理部が、データkeyを用いて原本データを記憶するキャッシュマネージャを決定し、決定したキャッシュマネージャに第1の要求メッセージを送信することにより参照要求の処理を実行することができる。
In this way, when the cache manager of the first server included in the client cluster does not store the data that has received the reference request, the original data of the data in the second server included in the original data cluster Can be received and the data can be received from the cache manager having the write authority and stored in its own storage unit.
At this time, the first server included in the client cluster only needs to transmit the first request message to the address of the original data cluster, and the configuration of the second server in the original data cluster may remain hidden. The distribution processing unit of the second server that has received the first request message determines the cache manager that stores the original data by using the data key, and refers to it by sending the first request message to the determined cache manager Request processing can be performed.
請求項2に記載の発明は、前記第1の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がない場合に、前記書き込み権限を持つキャッシュマネージャを抽出し、前記抽出した書き込み権限を持つキャッシュマネージャに前記第1の要求メッセージを送信することを特徴とする請求項1に記載のデータキャッシュシステムとした。
According to the second aspect of the present invention, when the cache manager of the second server that has received the first request message refers to the metadata of the data and does not have the write authority, the write authority 2. The data cache system according to
このようにすることで、原本データを記憶するキャッシュマネージャが書き込み権限を持たない場合に、メタデータを参照し、書き込み権限を持つ他のキャッシュマネージャに第1の要求メッセージを送信し、参照要求の処理を実行させることができる。 In this way, when the cache manager that stores the original data does not have write authority, the metadata is referred to, the first request message is transmitted to another cache manager having write authority, and the reference request Processing can be executed.
請求項3に記載の発明は、前記第1のサーバのキャッシュマネージャが、前記データの更新要求を受信した場合に、自身の前記記憶部に当該データを記憶しているか否かを、前記更新要求に付された前記データkeyを用いて探索し、前記データを記憶していないか、記憶していても前記メタデータを参照し自身が書き込み権限を持たないときに、当該データkeyから前記原本データクラスタのアドレスを抽出し、当該データの前記データkeyおよび当該キャッシュマネージャの前記キャッシュマネージャkeyを付した更新要求を前記原本データクラスタへの第2の要求メッセージに含めて送信し、前記第2のサーバの振り分け処理部は、受信した前記第2の要求メッセージから前記データkeyを抽出し、前記データに対応する原本データを記憶する前記キャッシュマネージャを、前記キャッシュデータ管理情報を参照して決定し、前記決定したキャッシュマネージャに前記第2の要求メッセージを送信し、前記第2の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がある場合に、前記データを更新し、前記第2の要求メッセージから前記キャッシュマネージャkeyを抽出し、前記メタデータの読み出し権限に前記抽出したキャッシュマネージャkeyを付した上で、当該キャッシュマネージャkeyから前記クライアントクラスタのアドレスを抽出し、更新した前記データを前記第1のサーバのキャッシュマネージャに送信し、前記第1のサーバのキャッシュマネージャは、更新した前記データを受信して自身の記憶部に記憶し、当該データを出力することを特徴とする請求項1または請求項2に記載のデータキャッシュシステムとした。
According to a third aspect of the present invention, when the cache manager of the first server receives the update request for the data, the update request indicates whether or not the data is stored in its storage unit. When the data key attached to is searched and the data is not stored, or even if the data is stored and the metadata is referred to and the user does not have the write authority, the original data is read from the data key. An address of the cluster is extracted, and an update request with the data key of the data and the cache manager key of the cache manager is included in a second request message to the original data cluster and transmitted, and the second server The distribution processing unit extracts the data key from the received second request message and stores the original data corresponding to the data A cache manager of the second server that has determined the cache manager with reference to the cache data management information, transmits the second request message to the determined cache manager, and has received the second request message. The manager refers to the metadata of the data, updates the data when the manager has the write permission, extracts the cache manager key from the second request message, and sets the read permission of the metadata. After adding the extracted cache manager key, the address of the client cluster is extracted from the cache manager key, the updated data is transmitted to the cache manager of the first server, and the cache of the first server is sent. The manager receives the updated data and stores it Stored in, and the data cache system according to
このようにすることで、クライアントクラスタが備える第1のサーバのキャッシュマネージャが、更新要求を受けたデータを記憶していない場合に、原本データクラスタが備える第2のサーバの、当該データの原本データを記憶し、かつ、書き込み権限を持つキャッシュマネージャに、更新要求を示す第2の要求メッセージを送信し、データを更新させる。そして、クライアントクラスタが備える第1のサーバのキャッシュマネージャは、読み出し権限を得た上で更新されたデータを受信し、自身の記憶部に記憶することができる。 In this way, when the cache manager of the first server included in the client cluster does not store the data that has received the update request, the original data of the data of the second server included in the original data cluster Is transmitted and a second request message indicating an update request is transmitted to the cache manager having the write authority to update the data. Then, the cache manager of the first server provided in the client cluster can receive the updated data after obtaining the read authority and store it in its own storage unit.
請求項4に記載の発明は、前記第2の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がない場合に、前記書き込み権限を持つキャッシュマネージャを抽出し、前記抽出した書き込み権限を持つキャッシュマネージャに前記第2の要求メッセージを送信することを特徴とする請求項3に記載のデータキャッシュシステムとした。 According to a fourth aspect of the present invention, when the cache manager of the second server that has received the second request message refers to the metadata of the data and does not have the write authority, the write authority 4. The data cache system according to claim 3, wherein a cache manager having a right is extracted, and the second request message is transmitted to the extracted cache manager having the write authority.
このようにすることで、原本データを記憶するキャッシュマネージャが書き込み権限を持たない場合に、メタデータを参照し、書き込み権限を持つ他のキャッシュマネージャに第2の要求メッセージを送信し、更新要求の処理を実行させることができる。 In this way, when the cache manager that stores the original data does not have the write authority, the metadata is referred to, the second request message is transmitted to another cache manager having the write authority, and the update request Processing can be executed.
本発明によれば、呼出元(クライアント)および呼出先(原本データの保存サーバ)のクラスタ構成を互いに隠蔽したまま、キャッシュデータの情報の更新を通知し合うことが可能となるデータキャッシュシステムを提供することができる。 According to the present invention, there is provided a data cache system capable of notifying update of cache data information while concealing the cluster configuration of a caller (client) and a callee (original data storage server) from each other. can do.
次に、本発明を実施するための形態(以下、「本実施形態」という。)におけるデータキャッシュシステム100について説明する。 Next, the data cache system 100 in a mode for carrying out the present invention (hereinafter referred to as “the present embodiment”) will be described.
<システム構成>
図1は、本実施形態に係るデータキャッシュシステム100の構成例を示す図である。
図1に示すように、データキャッシュシステム100は、複数のサーバ1(1y:第1のサーバ)で構成され原本となるデータ(原本データ)を分散して記憶する原本データクラスタ10と、クライアントクラスタ20とが、ネットワークを介して接続される。クライアントクラスタ20は、複数のサーバ1(1x:第2のサーバ)によりクラスタを構成し、原本データクラスタ10に対しリクエスト(要求情報)を送信することにより応答情報を取得する。また、クライアントクラスタ20の各サーバ1(1x)は、原本データクラスタ10から取得した情報をキャッシュデータとして記憶する。
なお、本実施形態においては、クライアント側が、クライアントクラスタ20であることを前提して説明するが、図1に示すように、単体サーバであるクライアント端末30でも、同様に処理を実行することができる。このクライアント端末30は、クライアントクラスタ20を構成するサーバ1(1x)と同様に、原本データクラスタ10に対しリクエスト(要求情報)を送信し、取得した情報をキャッシュデータとして記憶する。
<System configuration>
FIG. 1 is a diagram illustrating a configuration example of a data cache system 100 according to the present embodiment.
As shown in FIG. 1, a data cache system 100 includes an
In the present embodiment, the description will be given on the assumption that the client side is the
<クラスタ構成>
次に、原本データクラスタ10およびクライアントクラスタ20の構成例について説明する。原本データクラスタ10およびクライアントクラスタ20は共に、以下に示す同様の構成を備えているため、ここでは、原本データクラスタ10を例に説明する。
<Cluster configuration>
Next, configuration examples of the
図2は、本実施形態に係る原本データクラスタ10の構成例を示す図である。
図2に示すように、原本データクラスタ10は、ロードバランサB(Balancer:各図において「B」と表記)と、複数のディスパッチャD(Dispatcher:図2において「D」と表記)と、複数のプロセッサP(Processor:図2において「P」と表記)とを含んで構成される。
FIG. 2 is a diagram illustrating a configuration example of the
As shown in FIG. 2, the
ロードバランサBは、外部端末40からリクエスト(要求情報)を取得し、それに対する応答情報を外部端末40に送信する。また、ロードバランサBは、ラウンドロビン等の単純なアルゴリズムに基づき、取得したリクエストを複数のディスパッチャD(D1,D2,D3)のいずれかに振り分ける。ここで、外部端末40は、図1に示した、クライアントクラスタ20を構成するサーバ1(1x)やクライアント端末30である。
The load balancer B acquires a request (request information) from the
各ディスパッチャD(D1,D2,D3)は、複数のプロセッサP(P1,P2,P3)と接続されており、ロードバランサBから取得したリクエストを、プロセッサP(P1,P2,P3)のいずれかに振り分ける。このディスパッチャDは、入力データを解析し、所定のデータ管理アルゴリズム、例えば、コンシステントハッシュ法を適用して、データの格納先であるプロセッサPを決定し、そのリクエストを送信する。 Each dispatcher D (D 1 , D 2 , D 3 ) is connected to a plurality of processors P (P 1 , P 2 , P 3 ), and requests received from the load balancer B are sent to the processor P (P 1 , P 1 , distributed to any of the P 2, P 3). The dispatcher D analyzes input data, applies a predetermined data management algorithm, for example, a consistent hash method, determines a processor P that is a data storage destination, and transmits the request.
プロセッサPは、複数のディスパッチャD(D1,D2,D3)に接続されており、いずれかのディスパッチャDからリクエストを受信し、そのリクエストに従い、自身の記憶部(ローカルストレージ)に新規データを保存したり、既存データを更新したり、データの参照(取得)処理をしたりする制御を実行する。なお、このローカルストレージには、データをキャッシュとして保存するローカルキャッシュ(図5のキャッシュデータ記憶部131)を含む。また、以下において、特に説明なく「ローカル」と記載する場合は、ローカルキャッシュを含むローカルストレージを意味するものとする。さらに、ここでは、各データが記憶部に、XML(Extensible Markup Language)ファイルで保存されているものとして説明する。
The processor P is connected to a plurality of dispatchers D (D 1 , D 2 , D 3 ), receives a request from one of the dispatchers D, and in accordance with the request, new data is stored in its own storage unit (local storage). Is executed, the existing data is updated, and the data is referenced (acquired). The local storage includes a local cache (cache
なお、ディスパッチャD(D1,D2,D3)、プロセッサP(P1,P2,P3)それぞれは、図2に図示した3つの装置に限定されず、複数の装置であればよい。また、図2においては、ディスパッチャDとプロセッサPとを別装置として記載したが、同一サーバ上で別々の機能として動作させることが可能であり、本実施形態では、ディスパッチャDとプロセッサPとを1つのサーバ1(クライアントクラスタ20側のサーバ1を「サーバ1x」、原本データクラスタ10側のサーバ1を「サーバ1y」)として、以下において説明する。
The dispatchers D (D 1 , D 2 , D 3 ) and the processors P (P 1 , P 2 , P 3 ) are not limited to the three devices illustrated in FIG. . In FIG. 2, the dispatcher D and the processor P are described as separate devices. However, the dispatcher D and the processor P can be operated as separate functions on the same server. In the following description, the two servers 1 (the
<概要>
本発明は、前記した問題(1)および(2)に示した技術的課題を解決するため、以下に示す技術的手段とした。
問題(1)のクライアント側のクラスタ自体がNAT等で内部のサーバ1を隠蔽している点に関しては、外部からクラスタ内のマシン(サーバ1等)にPushで通信可能にする必要がある。ここで、クライアントクラスタ20は、そもそもデータを保存・管理するためのクラスタ構成をとっていることから、外部からクラスタ内部のサーバ1へリクエスト信号が到達可能な機構を備えている。その機構を流用し、リクエスト信号上でデータの参照要求や更新要求を記述することによって、外部からクラスタ内のサーバ1が、そのデータの参照要求や更新要求を受け付けられるようにする。なお、本実施形態では、後記するように、リクエストとして、HTTPのGETメソッドやPUTメソッドを利用した場合を例に説明する。
<Overview>
In order to solve the technical problems shown in the above problems (1) and (2), the present invention has the following technical means.
Regarding the problem (1) that the client-side cluster itself conceals the
問題(2)のクラスタ内部で、データの保存先が移動してしまう点に関しては、クラスタで採用するデータ振り分けの構成変更に追従する必要がある。そこで、クラスタのデータの保存・管理手法を、例えば、KVS(Key Value Store)機構とし、その振り分けアルゴリズム(例えば、コンシステントハッシュ法)を流用する。なお、KVSとは、任意に保存したデータ(値:value)に対し、対応する一意の標識(key)を設定し、keyおよびvalueをペアで保存するデータ保存・管理手法である。このようにすることで、冗長等のためクラスタ内部でデータの保存先が変更等された場合であっても、keyを指定することで、データの保存先となるサーバ1に追従することが可能となる。
Regarding the point where the data storage destination moves within the cluster of problem (2), it is necessary to follow the configuration change of the data distribution adopted in the cluster. Therefore, the cluster data storage / management method is, for example, the KVS (Key Value Store) mechanism, and the distribution algorithm (for example, the consistent hash method) is used. Note that KVS is a data storage / management technique in which a corresponding unique indicator (key) is set for arbitrarily stored data (value: value), and the key and value are stored in pairs. In this way, even if the data storage destination is changed within the cluster due to redundancy, etc., it is possible to follow the
次に、本実施形態の詳細を説明するための前提として、クライアントクラスタ20内のサーバ1(1x)によるキャッシュデータの参照処理と更新処理の主な例を、図3および図4を参照して説明する。なお、データキャッシュシステム100内における、参照処理および更新処理の詳細な処理の流れについては、他の例も含めて、図11〜図15を参照して後記する。
Next, as a premise for explaining the details of this embodiment, main examples of cache data reference processing and update processing by the server 1 (1x) in the
図3は、クライアントクラスタ20内の1つのサーバ1(1x)が、キャッシュデータの参照要求を処理する例を示している。具体的には、サーバ1(1x)において、アプリケーション(図5に示すアプリケーション処理部112:図3において「APL」と表記)から、キャッシュデータを管理するキャッシュマネージャ113(図5)が参照要求を受信した場合を示している。ここで、アプリケーション処理部112が、データの参照や更新を実行するときには、キャッシュマネージャ113を経由して処理が実行されるように設定される。
FIG. 3 shows an example in which one server 1 (1x) in the
まず、サーバ1(1x)のキャッシュマネージャ113が、アプリケーション処理部112からデータの参照要求を受信する(ステップS10)。なお、この参照要求には、当該データを識別するためのkey(データkey)が付されている。
First, the
キャッシュマネージャ113は、参照要求を受信すると、データkeyに基づき、自身の記憶部13(図5:ローカルキャッシュ)を探索し、当該データを記憶していれば、そのデータをアプリケーション処理部112に返す(ステップS11)。
When the
キャッシュマネージャ113は、自身の記憶部13(ローカルキャッシュ)に当該データを記憶していなければ、Write権限を持つ他のキャッシュマネージャ113から、当該データをRead権限付きで取得する(ステップS12)。そして、キャッシュマネージャ113は、取得したデータをアプリケーション処理部112に返す(ステップS13)。
If the
ここで、Read権限とは、データの読み出し(参照)権限であり、そのデータを参照する権限を意味し、データの書き込み等は行えない。また、Write権限とは、データの書き込み(更新)権限であり、そのデータを更新する権限を意味する。そして、キャッシュマネージャ113がWrite権限を備える場合は、Read権限を同時に備えており、他のキャッシュマネージャ113に対し、Read権限を付与したり、Write権限を移行したりすることができる。
Here, the Read authority is an authority to read (refer) data, and refers to an authority to refer to the data, and data cannot be written. The write authority is an authority to write (update) data and to update the data. When the
また、キャッシュデータには、データ(データ値)に、そのデータのデータkeyとメタデータとが付されて記憶されており(例えば、図11の符号1000参照)、このメタデータには、Read権限を備えるキャッシュマネージャ113の識別子(例えば、「p1」)を含むそのキャッシュマネージャのkey(例えば、「p1@XXX」)と、Write権限を備えるキャッシュマネージャ113の識別子(例えば、「q」)を含むそのキャッシュマネージャのkey(例えば、「q@YYY」)とが記載される。なお、「XXX」および「YYY」は、そのクラスタの入口となるロードバランサBのアドレス(例えば、IPアドレス)であり、そのキャッシュマネージャ113が属するクラスタを示している。そして、Write権限を持つキャッシュマネージャ113は、他のキャッシュマネージャに対し、Read権限を付与したり、Write権限を移行したりする際には、このメタデータを更新する。
The cache data stores data (data value) with the data key and metadata of the data attached (for example, see
図4は、クライアントクラスタ20内の1つのサーバ1(1x)が、キャッシュデータの更新要求を処理する例を示している。具体的には、サーバ1(1x)において、アプリケーション処理部112からキャッシュマネージャ113が更新要求を受信した場合を示している。
FIG. 4 shows an example in which one server 1 (1x) in the
まず、サーバ1(1x)のキャッシュマネージャ113が、アプリケーション処理部112からデータの更新要求を受信する(ステップS20)。なお、この更新要求には、当該データのkey(データkey)が付されている。
First, the
キャッシュマネージャ113は、更新要求を受信すると、データkeyに基づき、自身の記憶部13(ローカルキャッシュ)を探索し、当該データを記憶しており、当該データに付されたメタデータを参照して自身にWrite権限があれば、そのデータを更新する。そして、キャッシュマネージャ113は、当該データをキャッシュしている他のアプリケーション処理部112に対し、当該データの更新通知を送信する(ステップS21)。
Upon receiving the update request, the
一方、キャッシュマネージャ113は、自身の記憶部13(ローカルキャッシュ)に当該データを記憶していないか、記憶していてもWrite権限がなければ、当該データのWrite権限を持つ他のキャッシュマネージャ113に、当該データの更新要求を転送することにより、Write権限を持つ他のキャッシュマネージャ113に当該データを更新させる。
また、キャッシュマネージャ113は、自身の記憶部13(ローカルキャッシュ)に当該データを記憶していないか、記憶していてもWrite権限がない場合であり、Write権限を自身が取得した上で当該データを更新したいときは、当該データのWrite権限を持つ他のキャッシュマネージャ113から、当該データをWrite権限付きで取得する(ステップS22)。
そして、キャッシュマネージャ113は、当該データを更新し、当該データをキャッシュしている他のアプリケーション処理部112に対し、当該データの更新通知を送信する(ステップS23)。
On the other hand, if the
In addition, the
Then, the
このように、Write権限を持つキャッシュマネージャ113が、そのデータやそのデータに付されたメタデータが更新されたとき、当該データをキャッシュしている他のアプリケーション処理部112に対し、更新通知を送信することとで、クラスタ内のデータのコヒーレンス(一貫性)が保たれる。
As described above, when the
本実施形態に係るデータキャッシュシステムで100では、上記のように、キャッシュ対象となるデータにデータkeyが付されており、そのデータkeyとともに、そのデータのRead権限およびWrite権限を持つキャッシュマネージャ113のkey(キャッシュマネージャkey)を示すメタデータが、当該データに付されてキャッシュデータとして記憶される。そして、外部からクラスタ内に参照要求や更新要求を送信する際は、既存のリクエスト信号(例えば、HTTPのGETメソッドやPUTメソッドによるリクエスト)にリクエストオプションを設定することにより、データkey、送信元や送信先のキャッシュマネージャkey、および、処理内容等を付して送信する。リクエスト信号を受信したクラスタ内のノードでは、そのリクエスト信号に付されたデータkeyまたは、キャッシュマネージャkeyに基づき、当該データを担当するノードを特定して、そのリクエスト信号を受信することができる。
In the data cache system 100 according to the present embodiment, as described above, the data key is attached to the data to be cached, and together with the data key, the
<サーバの構成>
以下、本実施形態に係るクラスタ(クライアントクラスタ20および原本データクラスタ10)を構成するサーバ1(1x,1y)について具体的に説明する。図2に示したように、サーバ1は、ディスパッチャDの機能とプロセッサPの機能の両方を備えるものとして説明する。また、ここでは、原本データクラスタ10を構成するサーバ1(1y)、および、クライアントクラスタ20を構成するサーバ1(1x)は、同様の機能を備えるため、サーバ1として説明する。
<Server configuration>
Hereinafter, the server 1 (1x, 1y) constituting the cluster (
図5は、本実施形態に係るサーバ1の構成例を示す機能ブロック図である。
サーバ1は、図2に示したように、ロードバランサBと通信可能に接続されると共に、クラスタを構成する自身以外の他のサーバ1とも通信可能に接続される。そして、外部からロードバランサBを介して、参照要求や更新要求等のリクエストを受信する。
このサーバ1は、図5に示すように、制御部11と、入出力部12と、記憶部13とを含んで構成される。
FIG. 5 is a functional block diagram illustrating a configuration example of the
As shown in FIG. 2, the
As shown in FIG. 5, the
入出力部12は、ロードバランサBや、自身以外の他のサーバ1との間の情報の入出力を行う。また、この入出力部12は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
The input /
制御部11は、サーバ1全体の制御を司り、情報受信部111、アプリケーション処理部112、キャッシュマネージャ113、振り分け処理部114、および、情報送信部115を含んで構成される。なお、この制御部11は、例えば、サーバ1の記憶部13に格納されたプログラムをCPU(Central Processing Unit)がRAM(Random Access Memory)等に展開し実行することで実現される。
The control unit 11 controls the
情報受信部111は、入出力部12を介して、ロードバランサBやクラスタ内の他のサーバ1からの情報を受信する。
The
アプリケーション処理部112は、クライアントにサービスを提供等するためのアプリケーションの処理を実行する。このアプリケーション処理部112は、記憶部13に記憶されたキャッシュデータを利用する際に、データの参照要求や更新要求等のリクエストをキャッシュマネージャ113に出力する。なお、このリクエストには、そのデータを一意に識別するためのkey(データkey)が含まれる。
The
キャッシュマネージャ113は、キャッシュデータに関する処理の全般の制御を実行する。
具体的には、キャッシュマネージャ113は、アプリケーション処理部112からデータの参照要求を受信した場合において、自身の記憶部13(キャッシュデータ記憶部131)にそのデータを記憶しているときは、当該データをアプリケーション処理部112に返す。
一方、キャッシュマネージャ113は、自身の記憶部13(キャッシュデータ記憶部131)にそのデータを記憶していないときは、当該データのWrite権限を持つ他のキャッシュマネージャ113から、Read権限付きでデータを取得し、記憶部13(キャッシュデータ記憶部131)に記憶した上で、当該データをアプリケーション処理部112に返す。なお、この処理の詳細は、図11を参照して後記する。
The
Specifically, when the
On the other hand, when the
また、キャッシュマネージャ113は、アプリケーション処理部112からデータの更新要求を受信した場合において、自身の記憶部13(キャッシュデータ記憶部131)にそのデータを記憶しており、かつ、そのデータについてWrite権限を持つときには、そのデータを更新要求に基づき新たなデータに更新する。
一方、キャッシュマネージャ113は、自身の記憶部13(キャッシュデータ記憶部131)にそのデータを記憶していないとき、または、そのデータを記憶していても(つまり、Read権限を持っていても)、Write権限を持たないときは、Write権限を持つ他のサーバ1のアプリケーション処理部112からWrite権限の付与を受けてデータを更新する。このとき、キャッシュマネージャ113は、Write権限を持つ他のサーバにデータの更新を依頼することによりそのデータを更新させることもできる。なお、この処理の詳細は、図13および図14を参照して後記する。
In addition, when the
On the other hand, the
このキャッシュマネージャ113は、自身がそのデータを記憶部13(キャッシュデータ記憶部131)に記憶しているか否かを、受信したリクエストに付されたデータkeyを用いて探索する。また、そのデータのwrite権限を持っているか否かを、そのデータに付されたメタデータを参照して判定する。なお、このキャッシュマネージャ113の処理の詳細は、図7〜図10を参照して後記する。
The
また、ここで、本実施形態におけるデータkeyは、例えば「A@YYY」のように記述される。ここで「A」は、そのデータに固有な識別子(データ識別子)である。また、「YYY」は、そのデータの原本データが保存されるクラスタの入口(外部からの送信先)となるロードバランサBのアドレスである。このように、データkeyは、データ識別子と原本データクラスタ10に固有なロードバランサBのアドレスと組み合わせからなるものとする。よって、データkeyの情報として、ロードバランサB(アドレス:「YYY」)を含む原本データクラスタ10を構成する複数のサーバ1(1y)のうちのいずれかのサーバに、そのデータ「A」の原本データが必ず記憶されていることを意味する。
Here, the data key in this embodiment is described as “A @ YYY”, for example. Here, “A” is an identifier (data identifier) unique to the data. “YYY” is the address of the load balancer B that is the entrance (external transmission destination) of the cluster where the original data of the data is stored. As described above, the data key is assumed to be a combination of the data identifier and the address of the load balancer B unique to the
また、キャッシュマネージャ113は、自身が属するクラスタ以外の他のクラスタにリクエストを送信するときは、少なくとも、キャッシュマネージャのkey(キャッシュマネージャkey)と、データkeyとを含めたリクエストとして送信する。本実施形態では、HTTPのGETメソッドとPUTメソッドにリクエストオプションを設定した例として、後記において説明するが、同様のリクエストオプションを設定できるものであれば、HTTPに限定されるものではない。
When the
振り分け処理部114は、外部から情報受信部111が、リクエストを受信した際に、そのリクエストに付されたデータkeyに対し、KVS機構を用いた所定の振り分けアルゴリズム(ここでは、コンシステントハッシュ法とする。)に基づき、そのデータの保存や管理を担当するサーバ1(具体的には、そのサーバ1のキャッシュマネージャ113)を決定する。
When the
なお、ここで各サーバ1のキャッシュマネージャ113には、前記したように、そのクラスタ内で固有の識別子が付されており、コンシステントハッシュ法では、データkeyとキャッシュマネージャ113の識別子の双方を、ハッシュ関数にかけた値(ハッシュ値)を求める。そして、閉じたハッシュ空間上にキャッシュマネージャ113の識別子それぞれをハッシュ関数にかけた値(ハッシュ値)を配置し、リクエストに付されたデータkeyをハッシュ関数にかけた値(ハッシュ値)が、例えばハッシュ空間上で時計まわりに最初に出合ったキャッシュマネージャ113が、そのデータを担当するものとする。
Here, as described above, the
具体的には、各サーバ1は、クラスタ内で共通の情報として記憶部13内に、キャッシュデータ管理情報132を備え、振り分け処理部114は、このキャッシュデータ管理情報132に基づき、そのデータを管理するキャッシュマネージャ113を決定したり、そのキャッシュマネージャ113を備えるサーバのアドレスを知ることができる。
Specifically, each
図6は、本実施形態に係るキャッシュデータ管理情報132のデータ構成を示す図である。図6に示すように、キャッシュデータ管理情報132は、キャッシュマネージャ113の識別子と、その識別子をハッシュ関数にかけた値であるハッシュ値と、当該キャッシュマネージャ113が備わるサーバのアドレスとが格納される。
FIG. 6 is a diagram showing a data configuration of the cache
例えば、図6においては、データkeyをハッシュ関数にかけた値(ハッシュ値)が、「0」から「56」であるデータについては、第1行目が示す、アドレスが「xx0」のサーバのキャッシュマネージャ113(キャッシュマネージャの識別子「p0」)が担当する。同様に、データkeyをハッシュ関数にかけた値(ハッシュ値)が、「56」に1を加えた「57」から「172」であるデータについては、第2行目が示す、アドレスが「xx1」のサーバのキャッシュマネージャ113(キャッシュマネージャの識別子「p1」)が担当する。
このようにして、このキャッシュデータ管理情報132に基づき、データとそのデータを担当するキャッシュマネージャ113とが対応付けられる。
なお、本実施形態においては、1つのサーバ1に1つのキャッシュマネージャ113が存在するとして説明するが、1つのサーバ1に複数のキャッシュマネージャ113が存在するように設定することも可能である。また、この振り分け処理部114が備える機能が、図2に示すディスパッチャDの機能に相当する。
For example, in FIG. 6, for the data whose value (hash value) obtained by applying the data key to the hash function is “0” to “56”, the cache of the server whose address is “xx0” shown in the first line The manager 113 (cache manager identifier “p0”) is in charge. Similarly, for the data in which the value obtained by applying the data key to the hash function (hash value) is “57” to “172” obtained by adding 1 to “56”, the address indicated by the second line is “xx1”. The server's cache manager 113 (cache manager identifier “p1”) is in charge.
In this way, based on the cache
In the present embodiment, it is assumed that one
図5に戻り、情報送信部115は、キャッシュマネージャ113等により生成された情報(参照要求や更新要求等のリクエストやその応答情報)を、自身以外の他のサーバ1やロードバランサBに、入出力部12を介して送信する。
Returning to FIG. 5, the
記憶部13は、RAMや、ハードディスク、フラッシュメモリ等の記憶装置からなり、前記したキャッシュデータ管理情報132(図6)等を記憶する。また、記憶部13内には、RAM等にデータをキャッシュデータとして記憶する領域としてキャッシュデータ記憶部131(ローカルキャッシュともいう。)が備えられる。 The storage unit 13 includes a storage device such as a RAM, a hard disk, and a flash memory, and stores the cache data management information 132 (FIG. 6) and the like. Further, the storage unit 13 includes a cache data storage unit 131 (also referred to as a local cache) as an area for storing data as cache data in a RAM or the like.
<データキャッシュシステムの処理の流れ>
次に、本実施形態に係るデータキャッシュシステム100の処理の流れについて説明する。
まず、図7〜図10を参照して、サーバ1のキャッシュマネージャ113の処理について詳細に説明し、その後、図11〜図15を参照して、データキャッシュシステム100の全体の処理の流れについて説明する。
<Processing flow of data cache system>
Next, a processing flow of the data cache system 100 according to the present embodiment will be described.
First, the processing of the
≪キャッシュマネージャの処理≫
[キャッシュデータの参照処理]
図7は、本実施形態に係るクライアントクラスタ20のサーバ1(1x)のキャッシュマネージャ113が、アプリケーション処理部112からデータの参照要求のリクエストを受信した場合の処理の示すフローチャートである。
≪Process of cache manager≫
[Cache data reference processing]
FIG. 7 is a flowchart showing processing when the
まず、キャッシュマネージャ113(識別子「p」)は、アプリケーション処理部112から、データの参照要求を受信する(ステップS100)。図7に示した、「p.get(key,cachetype)」は、キャッシュマネージャ113(キャッシュマネージャの識別子「p」)が、データの「key」(データkey)と、「cachetype」とを引数として、データの参照要求としてgetメソッドを実行することを意味する。なお、「cachetype」には、Read権限(参照権限)を要求する「Read cache」か、更新権限を要求する「Write cache」かが付される。 First, the cache manager 113 (identifier “p”) receives a data reference request from the application processing unit 112 (step S100). As shown in FIG. 7, “p.get (key, cachetype)” indicates that the cache manager 113 (cache manager identifier “p”) uses data “key” (data key) and “cachetype” as arguments. This means that the get method is executed as a data reference request. “Cachetype” is attached with “Read cache” requesting Read authority (reference authority) or “Write cache” requesting update authority.
次に、キャッシュマネージャ113は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)から、key(データkey)、ここでは、例えば「A@YYY」を用いて、データの取得処理を実行する(ステップS101)。
Next, the
ここで、キャッシュマネージャ113は、キャッシュデータ記憶部131(ローカルキャッシュ)に該当データがない、若しくは、該当データが無効化されているかを判定する(ステップS102)。そして、キャッシュマネージャ113は、該当データがない若しくは無効化に該当しない場合(ステップS102→false)、つまり、該当データが見つかった場合には、そのデータ(ここでは、「v」)を、アプリケーション処理部112に返し(ステップS103)、処理を終える。
一方、キャッシュマネージャ113は、該当データがない若しくは無効化に該当する場合には(ステップS102→true)、次のステップS104に進む。
Here, the
On the other hand, if there is no corresponding data or invalidation (step S102 → true), the
ステップS104において、キャッシュマネージャ113は、自サーバがkey(データkey)の本来のサーバか否かを判定する。ここで、本来のサーバとは、データkey(A@YYY)のうち「YYY」で示される、クラスタの入口(外部からの送信先)となるロードバランサBのアドレスを含む原本データクラスタ10を構成するサーバ1(1y)であることを意味する。そして、キャッシュマネージャ113は、keyの本来のサーバである場合には(ステップS104→true)、データの取得が不可能であることを示す「null」を、アプリケーション処理部112に返し(ステップS105)、処理を終える。
一方、キャッシュマネージャ113は、keyの本来のサーバでない場合には(ステップS104→false)、次のステップS106に進む。
In step S104, the
On the other hand, if the
ステップS106において、キャッシュマネージャ113は、その参照要求のcachetypeを判定する。そして、キャッシュマネージャ113は、cachetypeがRead cacheであれば、ステップS107に進み、cachetypeがWrite cacheであれば、ステップS108に進む。
In step S106, the
ステップS107において、キャッシュマネージャ113は、keyの本来のサーバに、追加でこのサーバ1(自サーバ)がRead権限を持つようにすること(「ADD_R」メソッド)を通知する。つまり、キャッシュマネージャ113は、そのデータのメタデータのRead権限に自身のキャッシュマネージャkeyを追加で記載(Read権限を付与)した上で、そのデータを送信するように、keyの本来のサーバに依頼する。
なお、キャッシュマネージャ113は、原本データクラスタ10を構成するサーバ1(1y)に向けてこの通知をするが、宛先は、原本データクラスタ10のロードバランサBのアドレス(YYY)となる。具体的は、キャッシュマネージャ113は、sendメソッドの「v=p.send(ADD_R,key,key.location(),null)」を実行することにより、例えば、HTTPのGETメソッドによるリクエストとして、
http://YYY/A.xml?sourcecachemanager=p@XXX&cachetype=read
を実行する。
なお、このリクエストに示される、「YYY」は、原本データクラスタ10のロードバランサBのアドレス(YYY)であり、「A」は、データ識別子であり、「?」マーク以後の部分がリクエストオプションとなる。このリクエストオプションの部分に、送信元となるキャッシュマネージャ113のキャッシュマネージャkey(「sourcecachemanager=p@XXX」)や、処理内容としてRead権限を要求すること(「cachetype=read」)等が記載される。
In step S107, the
The
http: //YYY/A.xml? sourcecachemanager = p @ XXX & cachetype = read
Execute.
In this request, “YYY” is the address (YYY) of the load balancer B of the
一方、ステップS108において、キャッシュマネージャ113は、keyの本来のサーバに、このサーバ1(自サーバ)がWrite権限を持つようにすること(「ADD_W」メソッド)を通知する。つまり、キャッシュマネージャ113は、keyの本来のサーバに、そのデータのメタデータのWrite権限を自サーバに書き換えさせた上で(Write権限付きで)、そのデータを送信するように依頼する。
具体的には、キャッシュマネージャ113は、sendメソッドの「v=p.send(ADD_W,key,key.location(),null)」を実行することにより、例えば、HTTPのGETメソッドによるリクエストとして、
http://YYY/A.xml?sourcecachemanager=p@XXX&cachetype=write
を実行する。
On the other hand, in step S108, the
Specifically, the
http: //YYY/A.xml? sourcecachemanager = p @ XXX & cachetype = write
Execute.
ステップS107およびステップS108の処理を終えると、ステップS109において、キャッシュマネージャ113は、Write権限を持つサーバ1から、該当データを受信する。そして、キャッシュマネージャ113は、そのデータを、キャッシュデータ記憶部131(ローカルキャッシュ)に記憶する(「p.put_local(key,value=v)」)。
When the processing of step S107 and step S108 is completed, in step S109, the
続いて、キャッシュマネージャ113は、該当データが見つかったとして、そのデータ(ここでは、「v」)を、アプリケーション処理部112に返し(ステップS110)、処理を終える。
Subsequently, assuming that the corresponding data is found, the
[キャッシュデータの更新処理]
図8および図9は、本実施形態に係るクライアントクラスタ20のサーバ1(1x)のキャッシュマネージャ113が、アプリケーション処理部112からデータ(ここではデータ「w」)の更新要求のリクエストを受信した場合の処理を示すフローチャートである。
[Cache data update processing]
8 and 9 show the case where the
まず、キャッシュマネージャ113(識別子「p」)は、アプリケーション処理部112から、データの更新要求を受信する(ステップS200)。この更新要求により、キャッシュマネージャ113は、データの「key」(データkey)と、「value」(更新後のデータ)とを引数としてputメソッドを実行する(p.put(key,value))。
First, the cache manager 113 (identifier “p”) receives a data update request from the application processing unit 112 (step S200). In response to this update request, the
次のステップS201において、キャッシュマネージャ113は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)から、key(データkey)を用いて、データの取得処理を実行する(w=p.get_local(key))。
In the next step S201, the
ここで、キャッシュマネージャ113は、キャッシュデータ記憶部131(ローカルキャッシュ)に該当データがない、若しくは、該当データが無効化されているかを判定する(ステップS202)。そして、キャッシュマネージャ113は、該当データがない若しくは無効化に該当しない場合(ステップS202→false)、つまり、該当データが見つかった場合には、ステップS203に進む。
Here, the
ステップS203において、キャッシュマネージャ113は、該当データに付されたメタデータからWrite権限を持つ記憶場所を取得する。なお、ここで、Write権限を持つ記憶場所とは、例えば、図11に示すメタデータ(符号1000参照)においては、<Write cache>タグのデータ「q@YYY」を意味する。つまり、ロードバランサBのアドレス「YYY」で示されるクラスタ(原本データクラスタ10)のサーバ1(1y)のうち、キャッシュマネージャの識別子が「q」のキャッシュマネージャ113がWrite権限を持つことを示している。なお、前記したように「q@YYY」は、キャッシュマネージャ113のkeyとして設定したものである。
In step S203, the
次に、自身がWrite権限を持つキャッシュマネージャ113か否かを判定する(ステップS204)。そして、自身がWrite権限を持つキャッシュマネージャ113であれば(ステップS204→true)、次のステップS208に進む。一方、自身がWrite権限を持つキャッシュマネージャ113でなければ(ステップS204→false)、ステップS205に進み、Write権限を持つキャッシュマネージャ113に更新を依頼する(p.send(PUT,key,q,value))。
Next, it is determined whether or not the
一方、ステップS202において、キャッシュデータ記憶部131(ローカルキャッシュ)において該当データが見つからなかった場合は(ステップS202→true)、自サーバがkey(データkey)の本来のサーバか否かを判定する(ステップS206)。そして、キャッシュマネージャ113は、keyの本来のサーバでなければ(ステップS206→false)、ステップS207において、keyの本来のサーバに、更新を依頼する(p.send(PUT,key,key.location(),value))。なお、キャッシュマネージャ113は、原本データクラスタ10を構成するサーバ1(1y)に向けてこの依頼をするが、宛先は、原本データクラスタ10のロードバランサBのアドレス(YYY)となる。
一方、キャッシュマネージャ113は、keyの本来のサーバであれば(ステップS206→true)、ステップS208に進む。
On the other hand, if the corresponding data is not found in the cache data storage unit 131 (local cache) in step S202 (step S202 → true), it is determined whether or not the own server is the original server of the key (data key) ( Step S206). If the
On the other hand, if the
ステップS208において、キャッシュマネージャ113は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に記憶されているデータ(キャッシュデータ)を更新する(p.put_local(key,value))。なお、このとき、キャッシュマネージャ113は、そのデータのメタデータについても変更が必要な場合は更新する。
In step S208, the
次に、図9に進む。図9では、図8のステップS208において、データが更新されたため、キャッシュマネージャ113は、他のキャッシュマネージャ113が記憶する更新前のデータを無効化する処理と、更新後のデータについてRead権限およびWrite権限を持つ他のキャッシュマネージャ113に更新データを送信する処理とを実行する。
Next, the process proceeds to FIG. In FIG. 9, since the data has been updated in step S <b> 208 of FIG. 8, the
まず、ステップS209において、キャッシュマネージャ113は、当該データの更新前のメタデータからRead権限を持つキャッシュマネージャ113をすべて取得し、リストを生成する。
First, in step S209, the
続いて、キャッシュマネージャ113は、更新前のデータを無効化するための設定を行う(ステップS210)、つまり、無効通知の生成を行う。
Subsequently, the
そして、キャッシュマネージャ113は、ステップS209で生成したリストのすべてのキャッシュマネージャ113を処理したか否かを判定する(ステップS211)。ここで、Read権限を持つすべてのキャッシュマネージャ113の処理を終えていない場合には(ステップS211→false)、次のステップS212に進む。
Then, the
キャッシュマネージャ113は、リストのi番目(初期値i=1)のキャッシュマネージャ113の記憶場所r(メタデータの<Read cache>タグのデータ)を設定し(ステップS212)、ステップS213において、そのキャッシュマネージャ113に無効通知を送信する(p.send(PUT_L,key,r,w))。そして、キャッシュマネージャ113は、ステップS214において、[i]に1を加えて、ステップS211に戻る。
The
キャッシュマネージャ113は、Read権限を持つすべてのキャッシュマネージャ113の処理を終えた場合は(ステップS211→true)、ステップS215に進み、更新後のメタデータからRead権限およびWrite権限を持つキャッシュマネージャ113をすべて取得し、リストを生成する。
When the
次に、キャッシュマネージャ113は、ステップS215で生成したリストのすべてのキャッシュマネージャ113を処理したか否かを判定し(ステップS216)、すべてのキャッシュマネージャ113の処理を終えていない場合には(ステップS216→false)、次のステップS217に進む。
Next, the
キャッシュマネージャ113は、リストのi番目(初期値i=1)のキャッシュマネージャ113の記憶場所r(メタデータの<Read cache>タグと<Write cache>タグのデータ)を設定し(ステップS217)、ステップS218において、そのキャッシュマネージャ113に更新内容であるデータ(更新データ)を送信する(p.send(PUT_L,key,r,value))。そして、キャッシュマネージャ113は、ステップS219において、[i]に1を加えて、ステップS216に戻る。
The
ステップS216において、ステップS215で生成したリストのすべてのキャッシュマネージャ113の処理を終えた場合には(ステップS216→true)、処理を終える。
In step S216, if all the
[キャッシュマネージャの受信メソッドの処理]
次に、あるサーバ1のキャッシュマネージャ113が、他のキャッシュマネージャ113が実行した送信(send)メソッドによる情報を受け取り、受信(receive)メソッドを実行する処理について説明する。
図10は、本実施形態に係るキャッシュマネージャ113が、受信メソッドを実行する処理の流れを示すフローチャートである。
[Cache Manager receive method processing]
Next, a process in which a
FIG. 10 is a flowchart showing a flow of processing in which the
まず、サーバ1のキャッシュマネージャ113は、ステップS300において、情報受信部111を介して、他のキャッシュマネージャ113が送信(send)メソッドを実行することにより送信された情報を受け取り、受信(receive)メソッドを実行する(p.receive(method,key,from,value))。
First, in step S300, the
次に、キャッシュマネージャ113は、受信した情報のメソッド(method)を判定する(ステップS301)。そして、キャッシュマネージャ113は、受信した情報のメソッドが、「PUT」であればステップS302に進み、「PUT_L」であればステップS303に進み、「ADD_R」(Read権限の追加)または「ADD_W」(Write権限の移行)であれば、ステップS304に進む。
Next, the
ステップS302において、キャッシュマネージャ113は、メソッド(method)が「PUT」であるとして、データの更新要求を受信したと判定し、図8および図9に示した、キャッシュデータの更新処理を実行する(p.put(key,value))。
In step S302, the
ステップS303において、キャッシュマネージャ113は、メソッド(method)が、「PUT_L」であるとして、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に、記憶されているデータ(キャッシュデータ)を更新する(p.put_local(key,value))。
In step S303, the
また、ステップS304において、メソッド(method)が「ADD_R」または「ADD_W」である場合、まず、キャッシュマネージャ113は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)から該当データの取得処理を実行する(w=p.get_local(key))。
In step S304, when the method is “ADD_R” or “ADD_W”, first, the
次に、キャッシュマネージャ113は、ステップS305において、該当データに付されたメタデータからWrite権限を持つ記憶場所(メタデータの<Write cache>タグのデータ)を取得する(q=w.get_metadata(write_cache))。
Next, in step S305, the
続いて、キャッシュマネージャ113は、再び、受信した情報のメソッド(method)を判定する(ステップS306)。そして、キャッシュマネージャ113は、メソッド(method)が、「ADD_R」であればステップS307に進み、「ADD_W」であればステップS308に進む。
Subsequently, the
ステップS307において、キャッシュマネージャ113は、そのデータのメタデータに、Read権限を設定した情報を生成する(w.set_metadata(read_cache,from))。
In step S307, the
また、ステップS308において、キャッシュマネージャ113は、そのデータのメタデータに、Write権限を設定した情報を生成する(w.set_matadata(write_cache,from))。
In step S308, the
ステップS307およびステップS308に続いて、キャッシュマネージャ113は、自身がWrite権限を持つキャッシュマネージャ113か否かを判定する(ステップS309)。
そして、自身がWrite権限を持つキャッシュマネージャ113でなければ(ステップS309→false)、ステップS310において、キャッシュマネージャ113は、Write権限を持つキャッシュマネージャ113に更新を依頼する(p.send(PUT,key,q,w))。
一方、自身がWrite権限を持つキャッシュマネージャ113であれば(ステップS309→true)、ステップS311において、キャッシュマネージャ113は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に記憶されているデータ(キャッシュデータ)を更新する(p.put_local(key,value))。
Subsequent to step S307 and step S308, the
If the
On the other hand, if the
そして、ステップS310およびS311の処理を終了すると、キャッシュマネージャ113は、送信(send)メソッドを送信してきたキャッシュマネージャ113に、データ「w」を送信して返す(ステップS312)。
When the processes of steps S310 and S311 are completed, the
≪データキャッシュシステム100の全体の処理の流れ≫
次に、本実施形態に係るデータキャッシュシステム100の全体(クライアントクラスタ20と原本データクラスタ10との間)での、キャッシュデータの参照処理および更新処理の流れについて、図11〜図15を参照して説明する。
<< Overall Processing Flow of Data Cache System 100 >>
Next, the flow of the cache data reference processing and update processing in the entire data cache system 100 (between the
[キャッシュデータの参照処理]
図11は、クライアントクラスタ20を構成するサーバ1(1x)のキャッシュマネージャ113が、リクエストの該当データを記憶していない状態で参照要求を受信した場合に、Read権限付きでデータを取得する例を示している。
[Cache data reference processing]
FIG. 11 shows an example in which the
まず、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)が、アプリケーション処理部112から、参照要求を受信する(ステップS30)。なお、この参照要求には、参照を要求するデータのkey(データkey)として「A@YYY」が付されているものとする。
First, the cache manager 113 (identifier “p1”) of the
参照要求を受信したキャッシュマネージャ113は、ステップS31において、自身のキャッシュデータ記憶部131(ローカルキャッシュ)を探索し、該当データを記憶していないことから、送信(send)メソッドを実行して(p1.send(ADD_R,A@YYY,YYY,null))、データの取得要求を原本データクラスタ10に送信する。例えば、キャッシュマネージャ113は、HTTPのGETメソッドを実行し、リクエストオプションを設定してデータの取得要求を送信する(http://YYY/A.xml?sourcecachemanager=p1@XXX&cachetype=read)。
これにより、当該キャッシュマネージャ113は、原本データクラスタ10の入口となるロードバランサB(IP:YYY)宛てにリクエストを送信し、ロードバランサBが、任意のサーバ1(1y)に振り分ける。そして、その振り分けられたサーバ1(1y)の振り分け処理部114が、データkey(A@YYY)に基づき、当該データを原本データとして記憶する担当を、キャッシュデータ管理情報132を参照して検出し、当該リクエストをそのデータの担当となるサーバ1(1y)(ここでは、識別子「q」のキャッシュマネージャ113とする。)に送信する。
In step S31, the
As a result, the
上記の処理により、原本データの担当であるキャッシュマネージャ113(識別子「q」)は、リクエストを受信すると(ステップS32)、受信(receive)メソッドを実行する(q.receive(ADD_R,A@YYY,p1@XXX,null))。
そして、原本データの担当であるキャッシュマネージャ113(識別子「q」)は、Write権限を持つ場合に、ステップS33において、そのデータのメタデータのRead権限(<read cache>タグ)に、「p1@XXX」を追記して(図11の符号1000参照)、当該データを含むファイルαを、クライアントクラスタ20に送信する。ここで、キャッシュマネージャ113は、例えば、HTTPのPUTメソッドを実行し、当該データを送信する(http://XXX/A.xml?destinationcachemanager=p1@XXX&sourcecachemanager=q@YYY)。
なお、図11の符号1000の<read cache>タグの記載において、<read cache>p1@XXX</read cache>とすべき終了タグの記載を、</>として省略して記載する。同様に、図11の<write cache>の終了タグ、さらに、図12〜図15においても、同様に終了タグを</>として省略して記載する。
上記の処理により、当該キャッシュマネージャ113は、クライアントクラスタ20の入口となるロードバランサB(IP:XXX)宛てにリクエストを送信し、ロードバランサBが、任意のサーバ1(1x)に振り分ける。そして、その振り分けられたサーバ1(1x)の振り分け処理部114が、宛先としてキャッシュマネージャ113(キャッシュマネージャ識別子「p1」を抽出し、キャッシュデータ管理情報132を参照して、当該リクエストをそのデータの担当となるサーバ1(1x)(識別子「p1」のキャッシュマネージャ113)に送信する。
Through the above processing, the cache manager 113 (identifier “q”) in charge of the original data receives the request (step S32), and executes the receive method (q.receive (ADD_R, A @ YYY, p1 @ XXX, null)).
Then, if the cache manager 113 (identifier “q”) in charge of the original data has the write authority, in step S33, the read authority (<read cache> tag) of the metadata of the data is set to “p1 @ “XXX” is added (see
Note that in the description of the <read cache> tag denoted by
By the above processing, the
なお、原本データの担当であるキャッシュマネージャ113(識別子「q」)がWrite権限を持たなかった場合は、当該キャッシュマネージャ113は、そのデータのメタデータを参照し、Write権限(<write cache>タグ)に記載されたキャッシュマネージャ113宛てに、さらにその取得要求のリクエストを送信する。
If the cache manager 113 (identifier “q”) that is in charge of the original data does not have the write authority, the
上記の処理により、データを受信したクライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)は、そのデータを、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に記憶し(ステップS34)、当該データを、アプリケーション処理部112に返す。
As a result of the above processing, the cache manager 113 (identifier “p1”) of the
このようにすることで、クライアントクラスタ20を構成するサーバ1(1x)のキャッシュマネージャ113が、リクエストの該当データを記憶していない状態で参照要求を受信した場合に、Read権限付きでデータを取得することができる。
In this way, when the
[キャッシュデータの参照処理(Write権限付き)]
図12は、クライアントクラスタ20を構成するサーバ1(1x)のキャッシュマネージャ113が、リクエストの該当データを記憶していない状態で参照要求を受信した場合に、Write権限付きでデータを取得する例を示している。
[Cache data reference processing (with Write permission)]
FIG. 12 shows an example in which the
まず、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)が、アプリケーション処理部112から、Write権限を含む参照要求を受信する(ステップS40)。なお、この参照要求には、参照を要求するデータのkey(データkey)として「A@YYY」が付されているものとする。
First, the cache manager 113 (identifier “p1”) of the
Write権限を含む参照要求を受信したキャッシュマネージャ113は、ステップS41において、自身のキャッシュデータ記憶部131(ローカルキャッシュ)を探索し、該当データを記憶していないことから、送信(send)メソッドを実行し(p1.send(ADD_W,A@YYY,YYY,null))、データの取得要求を原本データクラスタ10に送信する(http://YYY/A.xml?sourcecachemanager=p1@XXX&cachetype=write)。
In step S41, the
原本データクラスタ10のロードバランサB(IP:YYY)を介して、任意のサーバ1(1y)の振り分け処理部114の処理により特定された、原本データの担当であるキャッシュマネージャ113(識別子「q」)は、リクエストを受信すると(ステップS42)、受信(receive)メソッドを実行する(q.receive(ADD_W,A@YYY,p1@XXX,null))。
The cache manager 113 (identifier “q”) in charge of the original data identified by the processing of the
次に、Write権限を持つこのキャッシュマネージャ113(識別子「q」)は、ステップS43において、そのデータのメタデータのWrite権限(<write cache>タグ)に、「p1@XXX」を記載し、Read権限(<read cache>タグ)に原本データの担当として、自身のキャッシュマネージャkeyである「q@YYY」を追記する(図12の符号1001参照)。これは、原本データを管理するキャッシュマネージャ113は、Write権限を移行した場合であっても、Read権限は残ることによる。そして、キャッシュマネージャ113は、当該データを含むファイルαを、クライアントクラスタ20に送信する(http://XXX/A.xml?destinationcachemanager=p1@XXX&sourcecachemanager=q@YYY)。
Next, this cache manager 113 (identifier “q”) having the write authority writes “p1 @ XXX” in the write authority (<write cache> tag) of the metadata of the data in step S43, and reads “Q @ YYY”, which is its own cache manager key, is added to the authority (<read cache> tag) as the charge of the original data (see
クライアントクラスタ20のロードバランサB(IP:XXX)を介して、任意のサーバ1(1x)から、Write権限付きのデータを受信したキャッシュマネージャ113(識別子「p1」)は、そのデータを、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に記憶し(ステップS44)、当該データを、アプリケーション処理部112に返す。
The cache manager 113 (identifier “p1”) that has received data with write authority from any server 1 (1x) via the load balancer B (IP: XXX) of the
このようにすることで、クライアントクラスタ20を構成するサーバ1(1x)のキャッシュマネージャ113が、リクエストの該当データを記憶していない状態で参照要求を受信した場合に、Write権限付きでデータを取得することができる。
なお、クライアントクラスタ20側のキャッシュマネージャ113がWrite権限を持ち自身でキャッシュデータを更新可能とすることで、頻繁に書き換えられるデータに対するキャッシュヒット効果を高めることができる。
In this way, when the
In addition, since the
[キャッシュデータの更新処理]
図13は、クライアントクラスタ20のキャッシュマネージャ113(識別子「p2」)がデータ(データkey「A@YYY」)のWrite権限を持つ状態で、更新要求を受信した場合に、キャッシュマネージャ113(識別子「p2」)自身が、このデータを更新する例を示している。
[Cache data update processing]
FIG. 13 shows the cache manager 113 (identifier “p2”) when the cache manager 113 (identifier “p2”) has a write authority for data (data key “A @ YYY”) and receives an update request. p2 ") itself shows an example of updating this data.
まず、クライアントクラスタ20のキャッシュマネージャ113(識別子「p2」)が、アプリケーション処理部112から、データの更新要求を受信する(ステップS50)。なお、この更新要求には、更新を要求するデータのkey(データkey)として「A@YYY」が付されているものとする。
First, the cache manager 113 (identifier “p2”) of the
キャッシュマネージャ113(識別子「p2」)は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)を探索し、該当データが存在しており、そのデータのメタデータを参照することにより、自身がWrite権限を持つことを確認し、そのデータを更新する(ステップS51)。 The cache manager 113 (identifier “p2”) searches its own cache data storage unit 131 (local cache), the corresponding data exists, and by referring to the metadata of the data, the cache manager 113 (identifier “p2”) The data is confirmed and the data is updated (step S51).
ここで、キャッシュマネージャ113(識別子「p2」)は、更新前のメタデータのRead権限を参照し、更新前のRead権限を持つキャッシュマネージャ113に対し、無効通知を送信する(ステップS52)。ここでは、符号1002に示すように、更新前のRead権限を、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」と、原本データクラスタ10のキャッシュマネージャ113(識別子「q」)とが持つので、この2つのキャッシュマネージャ113に対して、データ(「α」)の無効通知を送信する。例えば、原本データクラスタ10のキャッシュマネージャ113(識別子「q」)に向けて、「http://YYY/A.xml?destinationcachemanager=q@YYY&sourcecachemanager=p2@XXX&invalidate=true」が送信される。
Here, the cache manager 113 (identifier “p2”) refers to the read authority of the metadata before update, and transmits an invalid notice to the
続いて、キャッシュマネージャ113(識別子「p2」)は、更新後のメタデータのRead権限を参照し、更新後のRead権限を持つキャッシュマネージャ113に対し、更新データを送信する(ステップS53)。ここでは、符号1003に示すように、更新後のRead権限を、原本データクラスタ10のキャッシュマネージャ113(識別子「q」)が持つので、このキャッシュマネージャ113に対して、更新データを送信する。なお、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)は、更新後のメタデータにおいて、Read権限を持たないため、更新データは送信されない。
Subsequently, the cache manager 113 (identifier “p2”) refers to the read authority of the updated metadata, and transmits the update data to the
原本データクラスタ10のロードバランサB(IP:YYY)を介して、任意のサーバ1(1y)から、更新データを受信したキャッシュマネージャ(識別子「q」)は、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に更新データ(「α’」)を記憶することにより、データを更新する(ステップS54)。
The cache manager (identifier “q”) that has received the update data from any server 1 (1y) via the load balancer B (IP: YYY) of the
このようにすることにより、クライアントクラスタ20のキャッシュマネージャ113がデータのWrite権限を持つ状態で、更新要求を受信した場合に、そのキャッシュマネージャ113自身が、データを更新することができる。また、更新前のデータを記憶する他のキャッシュマネージャ113に対して無効通知を送信し、更新後のデータを、更新後のメタデータに基づき他のキャッシュマネージャ113に送信することで、クラスタ内のキャッシュデータのコヒーレンスを保つことができる。
In this way, when the
[キャッシュデータの更新依頼]
図14は、Write権限を持たないキャッシュマネージャ113において、データを更新したい場合に、Write権限を持つキャッシュマネージャ113に更新を依頼する例を示している。
[Cache data update request]
FIG. 14 shows an example in which when the
まず、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)が、アプリケーション処理部112から、データの更新要求を受信する(ステップS60)。なお、この更新要求には、更新を要求するデータのkey(データkey)として「A@YYY」が付されているものとする。
First, the cache manager 113 (identifier “p1”) of the
ここで、キャッシュマネージャ113(識別子「p1」)は、ステップS61において、自身のキャッシュデータ記憶部131(ローカルキャッシュ)を探索し、該当データを記憶していないことから、送信(send)メソッドを実行し(p1.send(PUT,A@YYY,YYY,α'))、データの更新依頼を原本データクラスタ10のロードバランサB(IP:YYY)に送信する(http://YYY/A.xml?sourcecachemanager=p1@XXX)。 Here, in step S61, the cache manager 113 (identifier “p1”) searches its own cache data storage unit 131 (local cache) and does not store the corresponding data, and executes the send method. (P1.send (PUT, A @ YYY, YYY, α ')) and a data update request is transmitted to the load balancer B (IP: YYY) of the original data cluster 10 (http: //YYY/A.xml ? sourcecachemanager = p1 @ XXX).
原本データクラスタ10のロードバランサB(IP:YYY)を介して、任意のサーバ1(1y)の振り分け処理部114の処理により特定された、原本データの担当であるキャッシュマネージャ113(識別子「q」)は、ステップS62において、データの更新依頼を受信し、自身にWrite権限がある場合に、受信(receive)メソッドを実行することにより(q.receive(PUT,A@YYY,p1@XXX,α'))、データを更新する。
なお、ここで、原本データの担当であるキャッシュマネージャ113(識別子「q」)にWrite権限がなかった場合は、当該キャッシュマネージャ113は、そのデータのメタデータを参照し、Write権限(<write cache>タグ)に記載されたキャッシュマネージャ113宛てに、さらに更新依頼を送信する。
The cache manager 113 (identifier “q”) in charge of the original data identified by the processing of the
Here, if the cache manager 113 (identifier “q”) that is responsible for the original data does not have the write authority, the
Write権限を持つキャッシュマネージャ113(識別子「q」)は、当該データのメタデータのRead権限(<read cache>タグ)にキャッシュマネージャ(識別子「p1」)を追加し(符号1004参照)、Read権限付きで、更新データを、クライアントクラスタ20のキャッシュマネージャ113(識別子「p1」)に送信する(ステップS63)。なお、このとき、当該データのメタデータのRead権限(<read cache>タグ)に他のキャッシュマネージャ113が登録されていた場合は、そのキャッシュマネージャに対しても、更新データが同時に送信される。
The cache manager 113 (identifier “q”) having the write authority adds the cache manager (identifier “p1”) to the read authority (<read cache> tag) of the metadata of the data (see reference numeral 1004), and reads the authority. Then, the update data is transmitted to the cache manager 113 (identifier “p1”) of the client cluster 20 (step S63). At this time, if another
クライアントクラスタ20のロードバランサB(IP:XXX)を介して、任意のサーバ1(1x)から、更新データを受信したキャッシュマネージャ113(キャッシュマネージャの識別子「p1」)は、そのデータを、自身のキャッシュデータ記憶部131(ローカルキャッシュ)に記憶する(ステップS64)。
The cache manager 113 (cache manager identifier “p1”) that has received the update data from any server 1 (1x) via the load balancer B (IP: XXX) of the
このようにすることで、Write権限を持たないキャッシュマネージャ113において、データを更新したい場合に、Write権限を持つキャッシュマネージャ113に更新を依頼し、データを更新してもらった上で、自身がRead権限を持つことができる。
By doing so, when the
[クラスタのIPアドレスのみでの更新通知]
図15は、メタデータのRead権限(<read cache>タグ)において、キャッシュマネージャ113の識別子を省略し、クラスタのアドレス(実際は、クラスタの入口となるロードバランサBのアドレス)のみが記述されていた場合の更新通知の流れを示している。
[Update notification only with the cluster IP address]
FIG. 15 omits the identifier of the
ここでは、原本データクラスタ10のWrite権限を持つキャッシュマネージャ113(識別子「q」)でデータが更新され(ステップS70)、メタデータのRead権限(<readcache>タグ)に、クライアントクラスタ20のロードバランサBのIPアドレス(XXX)だけが記述される(符号1005参照)。この場合、Write権限を持つキャッシュマネージャ113(識別子「q」)は、ステップS71において、クライアントクラスタ20のすべてのキャッシュマネージャ113に向けて、更新通知を送信する(http://XXX/A.xml?destinationcachemanager=p*@XXX&sourcecachemanager=q@YYY)。
Here, the data is updated by the cache manager 113 (identifier “q”) having the write authority of the original data cluster 10 (step S70), and the load balancer of the
更新通知を受信したクライアントクラスタ20のロードバランサBは、ランダムにどこかのサーバ1(1x)にその更新通知を振り分ける(ステップS72)。そして、更新通知が振り分けられたサーバ1(1x)は、クラスタ全体にブロードキャストする機構を利用して、各サーバ1(1x)に更新通知を送信する(ステップS73)。
The load balancer B of the
このようにすることで、クラスタ内の各サーバ1にRead権限を持たせてデータを記憶させることができる。
In this way, each
以上説明したように、本実施形態に係るデータキャッシュシステム100によれば、呼出元(クライアント)および呼出先(原本データの保存サーバ)のクラスタ構成を互いに隠蔽したまま、キャッシュデータの情報の更新を通知し合うことが可能となる。また、クラスタ内部のサーバ1の構成が、故障や増設等で変化した場合であっても、参照対象や更新対象のデータの移動先の正しい保存先に、リクエストを送信し、参照や更新処理を実行した上、クラスタのコヒーレンスを保つことができる。
As described above, according to the data cache system 100 according to the present embodiment, the cache data information is updated while the cluster configurations of the caller (client) and the callee (original data storage server) are hidden from each other. It is possible to notify each other. Even if the configuration of the
1,1x,1y サーバ
10 原本データクラスタ
11 制御部
12 入出力部
13 記憶部
20 クライアントクラスタ
30 クライアント端末
40 外部端末
100 データキャッシュシステム
111 情報受信部
112 アプリケーション処理部
113 キャッシュマネージャ
114 振り分け処理部
115 情報送信部
131 キャッシュデータ記憶部(ローカルキャッシュ)
132 キャッシュデータ管理情報
B ロードバランサ
D(D1,D2,D3) ディスパッチャ
P(P1,P2,P3) プロセッサ
1, 1x,
132 Cache data management information B Load balancer D (D 1 , D 2 , D 3 ) Dispatcher P (P 1 , P 2 , P 3 ) Processor
Claims (4)
前記クライアントクラスタが備えるサーバである第1のサーバ、および、前記原本データクラスタが備えるサーバである第2のサーバ、それぞれは、
(1)前記データに固有な識別子および当該データの原本データを保存する前記原本データクラスタのアドレスで構成されるデータkeyと、前記データの読み出し処理および書き込み処理を実行するキャッシュマネージャに固有な識別子および当該キャッシュマネージャが属する前記クライアントクラスタまたは前記原本データクラスタを示すクラスタのアドレスで構成されるキャッシュマネージャkeyを用いて、前記データの読み出し権限および書き込み権限を持つキャッシュマネージャが格納されるメタデータと、が付された前記データ、および
(2)前記データkeyと、各クラスタ内のサーバに設定された複数のキャッシュマネージャそれぞれの固有な識別子とを対応付けたキャッシュデータ管理情報、を記憶する記憶部と、
前記データに付されたデータkeyを抽出し、前記キャッシュデータ管理情報を参照して、当該データに対応する前記キャッシュマネージャを決定する振り分け処理部と、
前記キャッシュマネージャと、を備え、
前記第1のサーバのキャッシュマネージャは、
前記データの参照要求を受信した場合に、自身の前記記憶部に当該データを記憶しているか否かを、前記参照要求に付された前記データkeyを用いて探索し、前記データを記憶していない場合に、当該データkeyから前記原本データクラスタのアドレスを抽出し、当該データの前記データkeyおよび当該キャッシュマネージャの前記キャッシュマネージャkeyを付した取得要求を前記原本データクラスタへの第1の要求メッセージに含めて送信し、
前記第2のサーバの振り分け処理部は、受信した前記第1の要求メッセージから前記データkeyを抽出し、前記データに対応する原本データを記憶する前記キャッシュマネージャを、前記キャッシュデータ管理情報を参照して決定し、前記決定したキャッシュマネージャに前記第1の要求メッセージを送信し、
前記第1の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がある場合に、前記第1の要求メッセージから前記キャッシュマネージャkeyを抽出し、当該データのメタデータの読み出し権限に前記抽出したキャッシュマネージャkeyを付した上で、当該キャッシュマネージャkeyから前記クライアントクラスタのアドレスを抽出し、前記データを前記第1のサーバのキャッシュマネージャに送信し、
前記第1のサーバのキャッシュマネージャは、前記データを受信して自身の記憶部に記憶し、当該データを出力すること
を特徴とするデータキャッシュシステム。 A client cluster in which a plurality of servers that store data as cache data constitutes a cluster and an original data cluster in which a plurality of servers that store the original data of the cache data constitute a cluster are connected via a network A data cache system,
A first server that is a server included in the client cluster, and a second server that is a server included in the original data cluster,
(1) A data key composed of an identifier unique to the data and an address of the original data cluster for storing the original data of the data, an identifier unique to a cache manager that executes read processing and write processing of the data, and Using a cache manager key composed of an address of the cluster indicating the client cluster or the original data cluster to which the cache manager belongs, metadata storing a cache manager having the right to read and write the data, (2) a storage unit that stores the data key, and cache data management information in which the data key is associated with each unique identifier of each of the plurality of cache managers set in the servers in each cluster;
A data processing unit that extracts the data key attached to the data, refers to the cache data management information, and determines the cache manager corresponding to the data;
The cache manager,
The cache manager of the first server is
When the data reference request is received, the data key attached to the reference request is searched for whether the data is stored in the storage unit of the data, and the data is stored. If not, the address of the original data cluster is extracted from the data key, and an acquisition request to which the data key of the data and the cache manager key of the cache manager are attached is a first request message to the original data cluster. And send it in
The distribution processing unit of the second server extracts the data key from the received first request message and refers to the cache data management information for the cache manager that stores the original data corresponding to the data. Sending the first request message to the determined cache manager;
The cache manager of the second server that has received the first request message refers to the metadata of the data, and when the cache manager is authorized to write, the cache manager key is obtained from the first request message. Extracting and attaching the extracted cache manager key to the metadata read authority of the data, extracting the address of the client cluster from the cache manager key, and transferring the data to the cache manager of the first server Send
The cache manager of the first server receives the data, stores it in its storage unit, and outputs the data.
を特徴とする請求項1に記載のデータキャッシュシステム。 The cache manager of the second server that has received the first request message refers to the metadata of the data and extracts the cache manager having the write authority when the cache manager does not have the write authority. The data cache system according to claim 1, wherein the first request message is transmitted to the cache manager having the extracted write authority.
前記データの更新要求を受信した場合に、自身の前記記憶部に当該データを記憶しているか否かを、前記更新要求に付された前記データkeyを用いて探索し、前記データを記憶していないか、記憶していても前記メタデータを参照し自身が書き込み権限を持たないときに、当該データkeyから前記原本データクラスタのアドレスを抽出し、当該データの前記データkeyおよび当該キャッシュマネージャの前記キャッシュマネージャkeyを付した更新要求を前記原本データクラスタへの第2の要求メッセージに含めて送信し、
前記第2のサーバの振り分け処理部は、受信した前記第2の要求メッセージから前記データkeyを抽出し、前記データに対応する原本データを記憶する前記キャッシュマネージャを、前記キャッシュデータ管理情報を参照して決定し、前記決定したキャッシュマネージャに前記第2の要求メッセージを送信し、
前記第2の要求メッセージを受信した前記第2のサーバのキャッシュマネージャは、前記データの前記メタデータを参照し、自身に書き込み権限がある場合に、前記データを更新し、前記第2の要求メッセージから前記キャッシュマネージャkeyを抽出し、前記メタデータの読み出し権限に前記抽出したキャッシュマネージャkeyを付した上で、当該キャッシュマネージャkeyから前記クライアントクラスタのアドレスを抽出し、更新した前記データを前記第1のサーバのキャッシュマネージャに送信し、
前記第1のサーバのキャッシュマネージャは、更新した前記データを受信して自身の記憶部に記憶し、当該データを出力すること
を特徴とする請求項1または請求項2に記載のデータキャッシュシステム。 The cache manager of the first server is
When the data update request is received, the data key attached to the update request is searched for whether or not the data is stored in the storage unit of the data, and the data is stored. If the original data cluster address is extracted from the data key when the metadata does not have write authority with reference to the metadata even if stored, the data key of the data and the cache manager An update request with a cache manager key is sent in the second request message to the original data cluster,
The distribution processing unit of the second server extracts the data key from the received second request message and refers to the cache data management information for the cache manager that stores the original data corresponding to the data. Sending the second request message to the determined cache manager;
The cache manager of the second server that has received the second request message refers to the metadata of the data, and updates the data when the user has write permission, and the second request message The cache manager key is extracted from the metadata, and the extracted cache manager key is added to the read permission of the metadata. Then, the address of the client cluster is extracted from the cache manager key, and the updated data is stored in the first data. To the server's cache manager,
The data cache system according to claim 1 or 2, wherein the cache manager of the first server receives the updated data, stores the updated data in its own storage unit, and outputs the data.
を特徴とする請求項3に記載のデータキャッシュシステム。 The cache manager of the second server that has received the second request message refers to the metadata of the data and extracts the cache manager having the write authority when the cache manager does not have the write authority. The data cache system according to claim 3, wherein the second request message is transmitted to a cache manager having the extracted write authority.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012198059A JP5655044B2 (en) | 2012-09-10 | 2012-09-10 | Data cache system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012198059A JP5655044B2 (en) | 2012-09-10 | 2012-09-10 | Data cache system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014052928A JP2014052928A (en) | 2014-03-20 |
JP5655044B2 true JP5655044B2 (en) | 2015-01-14 |
Family
ID=50611333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012198059A Active JP5655044B2 (en) | 2012-09-10 | 2012-09-10 | Data cache system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5655044B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115604146B (en) * | 2022-11-30 | 2023-05-23 | 广东睿江云计算股份有限公司 | Method and system for continuously acquiring K8s cluster condition |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11027A (en) * | 1854-06-06 | Eyelet-machine | ||
JPH11224219A (en) * | 1998-02-05 | 1999-08-17 | Nippon Telegr & Teleph Corp <Ntt> | Decentralized cache control method, decentralization controller, decentralizzed cache system, and storage medium stored with decentralized cache control program |
JP3504596B2 (en) * | 2000-08-17 | 2004-03-08 | 日本電信電話株式会社 | Information providing system, information providing method, and recording medium |
JP4247975B2 (en) * | 2003-08-20 | 2009-04-02 | 日本電信電話株式会社 | Data management method, data management system, program therefor, and recording medium |
JP2006164218A (en) * | 2004-11-11 | 2006-06-22 | Nec Corp | Storage system and its cache control method |
-
2012
- 2012-09-10 JP JP2012198059A patent/JP5655044B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014052928A (en) | 2014-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9892043B2 (en) | Nested cache coherency protocol in a tiered multi-node computer system | |
US8818942B2 (en) | Database system with multiple layer distribution | |
US20080215819A1 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks | |
TW200832133A (en) | Handling of write access requests to shared memory in a data processing apparatus | |
US10050832B2 (en) | Server clustering in mobile computing environment | |
TWI386810B (en) | Directory-based data transfer protocol for multiprocessor system | |
US9160791B2 (en) | Managing connection failover in a load balancer | |
CN111274310A (en) | Distributed data caching method and system | |
US20140006716A1 (en) | Data control using last accessor information | |
KR20150103477A (en) | Apparatus and method for managing cache in cache distributed environment | |
US20080005486A1 (en) | Coordination of snoop responses in a multi-processor system | |
US7506108B2 (en) | Requester-generated forward for late conflicts in a cache coherency protocol | |
JP5655044B2 (en) | Data cache system | |
WO2019051105A1 (en) | Counting cache snoop filter based on a bloom filter | |
KR20210044281A (en) | Method and apparatus for ensuring continuous device operation stability in cloud degraded mode | |
CN106406745B (en) | Method and device for maintaining Cache data consistency according to directory information | |
CN114341821A (en) | Active direct cache transfer from producer to consumer | |
KR20060042412A (en) | Osgi service flatform and method for offering service using by it | |
JP7277075B2 (en) | Forwarding responses to snoop requests | |
Kumar et al. | Certain investigation in dns performance by using accelerator and stub network | |
US8484422B2 (en) | Maintaining data coherence by using data domains | |
KR20190015817A (en) | Method, Apparatus and System for Monitoring Using Middleware | |
US7380107B2 (en) | Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss | |
US20240089339A1 (en) | Caching across multiple cloud environments | |
US10579526B2 (en) | Responding to snoop requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140325 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140502 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20140528 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141113 |
|
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: 20141118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141121 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5655044 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |