企業向けデータグリッド:Red Hat JBoss Data Gridの特徴

2013年7月31日(水)
三木 雄平

利用可能なキャッシュモード

続いて利用可能なキャッシュモードに関して解説していきたいと思います。

JDGでは、Replication、Distribution、InvalidationおよびLocalと呼ばれる、全部で4つのキャッシュモードが用意されています。

まず、Replicationモードに関してですが、こちらはクラスタを構成されている全てのJDGインスタンスで同じデータを保持するモードとなります。

図3:Replicationモード(クリックで拡大)

メリットとしては全てのJDGインスタンスがデータを保持しているため、どのインスタンスにリクエストがあった場合でも必ずデータを取得できると言う点が上げられます。
デメリットとしてはデータ量が多い場合(例えば数テラバイトのデータを扱う等)は搭載メモリの制限上、利用が難しいと言う点と、JDGインスタンスが多い場合、書き込みおよび変更等の操作が非常に遅くなる可能性が挙げられます。

次に、Distributionモードについてですが、こちらはクラスタを構成するJDGインスタンスのうち、設定した任意の数のインスタンスのみ同様のデータを保持するモードです。

図4:Distributionモード(クリックで拡大)

図4のように、3個のJDGインスタンスが起動しているDistributionモード環境で、データを保持するインスタンス数(レプリカ数)を2とした場合、3個のうち任意の2つのJDGインスタンスのみ、同様のデータがコピー(レプリケーション)されます。

メリットとしては分散してデータを保持できるため、大容量のデータを取り扱うことが可能な点が上げらます。また、レプリカ数を任意に設定できるため、システムで要望されている、信頼性やパフォーマンスに併せて細かなチューニングが可能な点もメリットとなります。

デメリットとしては、全てのインスタンスがデータを保持している訳ではないので、アプリケーションからデータ操作を行った場合に、アクセスしたJDGインスタンスがデータを保持していない可能性があるため、パフォーマンスが若干落ちる場合がある点が上げられます。

なお、アクセスされたJDGインスタンスが該当のデータを保持していない場合、そのJDGインスタンスは該当するデータを保持しているJDGインスタンスからデータを取得し、アプリケーションに返すという動作を行います。このためアプリケーションからはDistributionモードの場合でも、どのJDGインスタンスがどのデータを保持しているかを意識する必要は全くありません。

図5:Distributionモード利用時のデータ取得例(クリックで拡大)

続いて、Invalidationモードです。こちらはクラスタを構成する各JDGインスタンスがローカルキャッシュとして動作しますが、データ更新時のみ別インスタンスに格納されている同一キーのデータを無効にするというモードです。
利用用途としては主にHibernate等の2次キャッシュが考えられます。

最後にLocalモードですが、こちらはクラスタ構成ではなく、1台のキャッシュ構成でデータを格納する構成です。アプリケーション内で処理中の作業データの格納や、一時退避領域としての利用等で利用されます。また、開発中はこのLocalモードの利用が最適です。

アクセスプロトコル解説

サーバ構成でリモートクライアントサーバモードを利用した場合、Memcached、Hot RodおよびRESTの3つのプロトコルが選択可能となっています。ここでは、MemcachedおよびHot Rodについて解説を行います。

まず、Memcachedに関しては名前の通り、Memcached互換プロトコルです。
Memcached対応アプリケーションが既にある場合は基本、アプリケーション側のコードを変更することなく移行が可能です。このため既にMemcachedを導入済みのアプリケーションから移行する場合には最適なプロトコルになります。ただ、細かな制御やJDGのオペレーションを手動で実施する必要があり、パフォーマンスも次に紹介するHot Rodに比べると劣ります。

続いてHot Rodに関してですが、こちらはJDG独自のプロトコルとなります。他のプロトコルがテキストベースなのに対して、Hot Rodはバイナリ形式であるためより高速なプロトコルとなっています。また、JDGインスタンスの追加および削除時に、クライアントが持つサーバリストが自動更新される等、よりJDGを運用・管理しやすい機能が充実しています。さらに、データアクセスに関してもクライアントが自動的にデータを保持するノードを選択(計算)して処理を行うため、データを保持しないJDGインスタンスにアクセスしないと言うメリットがあります。

図6:Hot Rod利用時のデータ取得(クリックで拡大)

最後に

ここまで読み進めて頂くとご理解頂けたのではないかと思いますが、JDGは環境や要望に合わせて細かな設定が出来るようになっています。上記の各要素の解説を参考に最適な使用モード、キャッシュモード、アクセスプロトコルを選択してください。

次回からはいよいよ実際にJDGを触ってみたいと思います。第3回はインストール編になります。ご期待ください。

レッドハット株式会社

JBossグループ ソリューション・アーキテクト
株式会社SRAを経て、2002年に日本BEAシステムズ入社。カスタマーサポートチームにて、アプリケーションサーバおよびJava VM(JRockit)のサポートを担当。その後、プリセールスチームにてSIP Servlet関連の製品に携わる。2007年よりレッドハット JBossグループにてプリセールスを担当。
音楽(聴く&演奏)大好き。最近はJazzyなベースとリズムに魅了されてます。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています