プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Coherenceリモート・クライアントの開発
12c (12.1.3)
E56210-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

1 Coherence*Extendの概要

この章では、Coherence*Extendについて説明し、ネイティブCoherenceクライアント(Java、C++および.NET)と非ネイティブCoherenceクライアント(RESTおよびMemcached)に関する情報を提供します。

この章には次の項が含まれます:

1.1 Coherence*Extendの概要

Coherence*Extendは、コアとなるCoherence TCMPクラスタの作用範囲を、デスクトップ、リモート・サーバー、WANに接続されたコンピュータなどのより広範な顧客環境に拡張します。Coherence*Extendの一般的な用途は、Coherenceキャッシュ(ニア・キャッシュや連続問合せのサポートを含む)にアクセスできるデスクトップ・アプリケーションを提供したり、待機時間の長い不安定なWANを介して接続された複数のCoherenceクラスタをリンクしたりすることです。

Coherence*Extendは、2つの基本コンポーネントで構成されます。それらは、クラスタの外部で実行されるExtendクライアントと、ストレージが無効な1台以上のキャッシュ・サーバー(DefaultCacheServer)に配置されたクラスタで実行される拡張プロキシ・サービスです。クライアントAPIにはCacheServiceインタフェースとInvocationServiceインタフェースの両方の実装が含まれており、これらによって、すべてのリクエストはプロキシにルーティングされます。プロキシは、実際のCoherenceクラスタ化サービス(パーティション化またはレプリケートされたキャッシュ・サービス、起動サービスなど)に委任することによってクライアント・リクエストに応答します。

Coherence*Extendでは、Extend-TCP転送バインディング(低レベルのメッセージ・プロトコル)を使用して、クライアントとクラスタの間の通信を行います。このプロトコルは、高性能でスケーラブルなTCP/IPベースの通信レイヤーです。転送バインディングは、構成により、Coherence*Extendを使用するクライアント・アプリケーションに対して完全に透過的に行われます。

図1-1は、Coherence*Extendのコンポーネントの概念図であり、Extend-TCPを使用してExtendクライアントを拡張プロキシ・サービスに接続している状態を示しています。

図1-1 Coherence*Extendのコンポーネントの概念図

図1-1の説明が続きます
「図1-1 Coherence*Extendのコンポーネントの概念図」の説明

キャッシュ・クライアントと同様に、Extendクライアントでは、キャッシュ・ファクトリを使用してCoherenceクラスタ化サービスを取得します。サービスを取得すると、クライアントでは、Coherenceクラスタの一部であるかのようにそのサービスを使用します。リモート・クラスタ・ノードに送信される操作は、クライアント・アプリケーションに対して透過的になります。

1.2 Extendクライアント・タイプ

Extendクライアントは、Java、.NETおよびC++の各プラットフォーム用に作成でき、クラスタの完全なメンバーでなくとも、標準のCoherence APIと同等の充実したAPIにアクセスできます。通常、クライアント・アプリケーションでは、直接読取り/書込みアクセスを有効化できますが、クラスタ・データに対しては読取りアクセスのみが付与されます。クライアントには、データ・クライアントとリアルタイムExtendクライアントの2つのカテゴリがあります。

1.2.1 データ・クライアント

データ・クライアントは、クラスタ内のデータへのアクセス(入力、取得、問合せ)や、標準のCoherence APIを使用した起動サービス・リクエストが可能な、Extendクライアントです。特に、データ・クライアントには次の機能があります。

  • NamedCacheインタフェースを使用したキーベースのキャッシュ・アクセス

  • フィルタを使用した属性ベースのキャッシュ・アクセス

  • InvocableMapインタフェースを使用したクラスタ側エントリのカスタム処理と集計

  • LocalCacheを使用したインプロセス・キャッシング

  • 起動サービスを使用したクラスタ内のカスタム・タスクのリモート起動

データ・クライアントの機能の詳細は、『Oracle Fusion Middlewareライセンス情報』を参照してください。


注意:

データ・クライアントには、クラスタ内のデータの変更は通知できません。さらに、データ・クライアントには、ニア・キャッシュや連続問合せキャッシュの機能はありません。これらの機能も、クラスタからのデータ変更通知を受信する機能に依存しているためです。これらの機能に関しては、リアルタイム・クライアントを使用する必要があります。

1.2.2 リアルタイム・クライアント

リアルタイム・クライアント(Extend-TCP)には、データ・クライアントと同じ機能が備わっています。ただし、データ・クライアントとは異なり、リアルタイム・クライアントでは次の機能もサポートされています。

  • イベント通知 – 標準のCoherenceイベント・モデルを使用すると、クラスタ内で発生したデータの変更をクライアント・アプリケーションで確認できます。クライアント・アプリケーションで登録されたイベントのみが、ネットワークに配信されます。このモデルでは、ネットワーク帯域幅とクライアント処理が効率的に使用されます。

  • ローカル・キャッシュ – クラスタで管理されるキャッシュにクライアント・アプリケーションが直接アクセスできても、ネットワーク・インフラストラクチャによっては効果がない場合があります。効率を高めるために、リアルタイム・クライアントでは、ニア・キャッシュと連続問合せの両方を使用して、キャッシュ・データをローカルに維持できます。クライアント・アプリケーションが接続されているサーバーで障害が発生した場合は、接続が別のサーバーとの間で自動的に再確立され、ローカルにキャッシュされているデータはクラスタとの間で再び同期化されます。

リアルタイム・クライアントの機能の詳細は、『Oracle Fusion Middlewareライセンス情報』を参照してください。

1.3 ExtendクライアントAPI

Java、C++および.NET (C#)の各ネイティブ・ライブラリを使用して、Extendクライアントを構築できます。APIはそれぞれ独自の方法で配布されており、別個にインストールする必要があります。Extendクライアントでは、それぞれのAPIを使用して、クラスタ内のデータに対して、アクセス、変更、問合せなどのキャッシュ操作を行います。C++ APIとC# APIは、プラットフォーム間の動作を一貫させるために、できるかぎりJava APIに従っています。

たとえば、JavaクライアントでCacheFactory.getCacheメソッドを使用してNamedCacheインスタンスを取得する場合は次のようになります。

NamedCache cache = CacheFactory.getCache("dist-extend");

C++の場合は、APIは次のようになります。

NamedCache::Handle hCache = CacheFactory::getCache("dist-extend");

C#の場合は、APIは次のようになります。

INamedCache cache = CacheFactory.GetCache("dist-extend");

この機能およびその他の多くのAPIの機能については、このガイドの次の各項でも説明します。

1.4 POFシリアライズ

キャッシュ・クライアントと同様に、Extendクライアントでは、クラスタに格納するオブジェクトをシリアライズする必要があります。C++クライアントおよびC#クライアントでは、言語に依存しないバイナリ形式であるCoherenceのPortable Object Format (POF)を使用します。Java Extendクライアントでも、通常はPOFを使用してシリアライズを行います。ただし、Javaオブジェクトのシリアライズには、Javaネイティブ・シリアライズやカスタム・シリアライズ・ルーチンなど、他のオプションもいくつかあります。詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

オブジェクトをクラスタにシリアライズするクライアントでは、オブジェクトに対してgetベースとputベースの操作を実行できます。ただし、問合せや入力プロセッサなどの機能では、データ・オブジェクトのシリアライズ表現を保持するだけでなく、Javaベースのキャッシュ・サーバーを使用してデータ・オブジェクトと相互作用する必要があります。データ・オブジェクトと相互作用してそのプロパティにアクセスするには、キャッシュ・サーバーでJavaバージョンのオブジェクトを利用できようにする必要があります。

JavaでPOFの使用する際の詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。C++およびC#でのPOFの使用方法の詳細は、それぞれ、第10章「統合オブジェクトの構築(C++)」および第17章「統合オブジェクトの構築(.NET)」を参照してください。

1.5 Extendクライアント構成ファイルの理解

Extendクライアントは、複数の構成ファイルを使用して構成します。この構成ファイルは、クラスタ構成ファイルと同じです。ただし、クライアント構成ファイルはクライアントでデプロイされています。該当するファイルは次のとおりです。

  • キャッシュ構成デプロイメント・ディスクリプタ – このファイルは、クライアント側のキャッシュ・サービスおよび起動サービスを定義するために使用します。クライアントの接続先であるクラスタ側の拡張プロキシ・サービスのアドレスとポートを指定する必要があります。このファイルのスキーマは、JavaおよびC++クライアント用がcoherence-cache-config.xsdで、.NETクライアント用がcache-config.xsdです。このファイルの要素の詳細なリファレンスは、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

    実行時には、クラスパスで最初に検出されたキャッシュ構成ファイルが使用されます。tangosol.coherence.cacheconfigシステム・プロパティを使用して、キャッシュ構成ファイルを明示的に指定することもできます。このファイルは、プログラムによっても設定できます。キャッシュ構成デプロイメント・ディスクリプタの一般的な情報は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

  • POF構成デプロイメント・ディスクリプタ – このファイルは、POFを使用してオブジェクトをシリアライズする際に、カスタム・データ型を指定するために使用します。このファイルのスキーマは、JavaおよびC++クライアント用がcoherence-pof-config.xsdで、.NETクライアント用がpof-config.xsdです。このファイルの要素の詳細なリファレンスは、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

    実行時には、クラスパスで最初に検出されたPOF構成ファイルが使用されます。tangosol.pof.configシステム・プロパティを使用して、POF構成ファイルを明示的に指定することもできます。POFを使用すると、クライアント・アプリケーションでは、Coherence固有のPOF構成ファイルと、クライアントで使用されているユーザー定義型固有のPOF構成ファイルが使用されます。POF構成デプロイメント・ディスクリプタの一般的な情報は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

  • オペレーション・オーバーライド・ファイル: このファイルは、オペレーション・デプロイメント・ディスクリプタをオーバーライドするために使用します。クラスタリング、通信およびデータ管理のサービスを作成、構成および維持するために使用する、操作設定およびランタイム設定を指定します。Extendクライアントの場合、このファイルは通常、メンバーのID、ロギング、セキュリティおよびライセンスをオーバーライドするために使用します。このファイルのスキーマは、JavaおよびC++クライアント用がcoherence-operational-config.xsdで、.NETクライアント用がcoherence.xsdです。このファイルの要素の詳細なリファレンスは、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

    実行時には、クラスパスで最初に検出されたオペレーション・オーバーライド・ファイル(tangosol-coherence-override.xml)が使用されます。tangosol.coherence.overrideシステム・プロパティを使用して、オペレーション・オーバーライド・ファイルを明示的に指定することもできます。このファイルは、プログラムによっても設定できます。オペレーション・オーバーライド・ファイルの一般的な情報は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。

1.6 非ネイティブ・クライアントのサポート

Coherenceでは、RESTベースまたはMemcachedベースのクライアントからキャッシュにリモート・アクセスできます。Coherence*Extendクライアント同様、非ネイティブ・クライアントはクラスタ・メンバーにならずにクラスタのリソースを使用します。RESTおよびMemcachedの両方のクライアントAPIは多くの一般的なプログラミング言語で使用できるため、Coherenceを異種環境で使用できます。非ネイティブ・クライアントを使用して、ネイティブCoherenceクライアントAPIを使用するCoherenceソリューションへの移行を容易にすることもできます。

1.6.1 RESTクライアントのサポート

Coherenceでは、HTTPプロトコルを介してキャッシュ操作にアクセスできるREST実装が提供されます。任意のRESTクライアントAPIがCoherenceキャッシングを使用できます。RESTサポートは、プロキシ・サーバー上のExtendのようなアクセプタとして構成されている埋込みHTTPサーバーを介して、または任意のJava EEベースのアプリケーション・サーバーへのデプロイメントを介して提供されます。Coherence RESTの使用の詳細は、第I部「Coherence RESTの使用」を参照してください。

1.6.2 Memcachedクライアントのサポート

Coherenceは、memcachedサーバーの一時的な置換として使用できます。memcachedバイナリ・プロトコルをサポートする任意のmemcachedクライアントAPIは、Coherence分散キャッシングを使用できます。Memcachedサポートは、プロキシ・サーバー上で実行されるExtendのようなアクセプタとして実装されているmemcachedアダプタを介して提供されます。memcachedクライアント接続を受け入れるCoherenceの構成の詳細は、「Oracle Coherenceの統合」を参照してください。