[Coherence] One Client Two Clusters

原文はこちら。
https://blogs.oracle.com/felcey/entry/one_client_two_clusters

一つのクライアントが複数のクラスタに接続したほうがよい場合があります。それはデータが離散しているためであったり、例えばクラスタが高可用性を担保するため異なる場所に配置されていたりするためであったりします。TCP通信でプロキシサービスを介しCoherenceクラスタに接続するCoherence拡張クライアントや外部クライアントにとって、これは非常に単純です。このエントリではこの方式の実現方法を説明し、ご自身でも試して頂けるような簡単なサンプルを用意しました。この構成のアーキテクチャは以下のようになっています。

クライアントが同じ環境に共存しない場合には、Coherence*Extendの構成が望ましいでしょう。これはCoherence*Extendの性能がクラスタに影響を与えず、接続・切断時にはデータの復旧やリバランスされず、クラスタメンバーは変化しないからです。

複数のクラスタに接続するクライアントを構成、拡張するには、各クラスタ用の別のキャッシュ構成ファイルを定義するだけでよいのです。ここで各構成ファイルにはキャッシュ名からクラスタのリモートアドレスが引けるようなマッピングが記載されています。これを使うと、複数のクラスタに対し同じキャッシュ名を持たせることができます。このリモートクラスタ構成の一意の要素例を以下に示します。

各リモートクラスタのサービス名は一意である必要があります。ただし、リモートスキーム名が同じでもかまいません。リモートアドレスもまた明らかに各クラスタで異なっています。

各キャッシュ構成ファイルを別のConfigurableCacheFactoryがロードします。そのため、各クラスタにはそれぞれのConfigurableCacheFactoryがあります。このConfigurableCacheFactoryを使って当該クラスタのNamedCacheを開始します。ここで完全に他のクラスタのNamedCacheから分離します。別々のNamedCacheを異なるConfiguratbleCacheFactoryを使用して作成する方法のサンプルを以下でご紹介します。

POFを使っている場合は、クライアントおよび各クラスタには同じシリアライゼーション情報を含める必要がありますが、これは非常に簡単です。

最後に、2個の別のクラスタと接続し、やりとりするところをただ今説明しましたが、12個以上のクラスタであっても、クライアントがJava以外の.NETやC++クライアントであっても同じです。

Coherenceを利用するソリューションの構築にあたり追加の選択肢として、このエントリがお役に立つことを願っています。この方法を試したい方は、簡単な1クライアントー2クラスタのJavaのサンプルを用意しましたのでお試し下さい。

0 件のコメント:

コメントを投稿