25 Coherence gRPCプロキシ・サーバーの使用
Coherence gRPCプロキシは、Coherence gRPCモジュール内で定義されているgRPCサービスのサーバー側実装です。gRPCプロキシは標準のgRPC Javaライブラリを使用し、gRPCを介してJava、JavaScript、PythonおよびGo gRPCクライアントにCoherence APIを提供します。
この章の内容は次のとおりです。
- Coherence gRPCプロキシ・サーバーの設定
Coherence gRPCサーバーを設定して使用を開始するには、プロジェクトの依存関係として宣言する必要があります。 - サーバーの構成
gRPCサーバーの構成には、サーバー・リスニング・アドレスとポート、SSL/TLSおよびサーバー・スレッド・プールの構成が含まれます。 - gRPCプロキシ・サーバーの無効化
coherence-grpc-proxy
モジュールがクラス・パス(またはモジュール・パス)にある場合、Coherence gRPCサーバーは自動的に起動します。 - Helidon Microprofile gRPCサーバーを使用したプロキシ・サービスのデプロイ
マイクロプロファイルgRPCサーバーを有効にした状態でHelidon Microprofileサーバーを使用する場合は、CoherenceのデフォルトのgRPCサーバーではなく、Helidon gRPCサーバーにCoherence gRPCプロキシをデプロイできます。
親トピック: gRPCの開始
Coherence gRPCプロキシ・サーバーの設定
Coherence gRPCサーバーを設定して使用を開始するには、プロジェクトの依存関係として宣言する必要があります。
例:
Mavenを使用している場合は、次のようにサーバーを宣言します:
pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${coherence.group.id}</groupId>
<artifactId>coherence-bom</artifactId>
<version>${coherence.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>${coherence.groupId}</groupId>
<artifactId>coherence</artifactId>
</dependency>
<dependency>
<groupId>${coherence.groupId}</groupId>
<artifactId>coherence-grpc-proxy</artifactId>
</dependency>
<dependencies>
pom.xml
ファイルでは、coherence.version
プロパティは使用されるCoherenceのバージョンで、coherence.groupId
プロパティはCoherence商用グループIDであるcom.oracle.coherence
またはCEグループIDであるcom.oracle.coherence.CE
のいずれかです。
Gradleを使用している場合は、次のようにサーバーを宣言します:
build.gradle
dependencies {
implementation platform("${coherenceGroupId}:coherence-bom:${coherenceVersion}")
implementation "${coherenceGroupId}:coherence"
implementation "${coherenceGroupId}:coherence-grpc-proxy"
}
build.gradle
ファイルでは、coherenceVersion
プロパティは使用されるCoherenceのバージョンで、coherenceGroupId
プロパティはCoherence商用グループIDである com.oracle.coherence
またはCEグループIDであるcom.oracle.coherence.CE
のいずれかです。
この項には次のトピックが含まれます:
- サーバーの起動
gRPCサーバーは、com.tangosol.net.Coherence
(またはcom.tangosol.net.DefaultCacheServer
)を実行すると自動的に起動します。通常、com.tangosol.net.Coherence
クラスをアプリケーションのメイン・クラスとして使用します。または、ブートストラップAPIを使用して、com.tangosol.net.Coherence
のインスタンスを起動することもできます。
親トピック: Coherence gRPCプロキシ・サーバーの使用
サーバーの起動
gRPCサーバーは、com.tangosol.net.Coherence
(またはcom.tangosol.net.DefaultCacheServer
)を実行すると自動的に起動します。通常、com.tangosol.net.Coherence
クラスをアプリケーションのメイン・クラスとして使用します。または、ブートストラップAPIを使用して、com.tangosol.net.Coherence
のインスタンスを起動することもできます。
デフォルトでは、gRPCサーバーはエフェメラル・ポートを使用して、すべてのローカル・アドレスをリスニングします。Coherence*Extendと同様に、gRPCサーバーがバインドされているエンドポイントは、Coherence NameServiceを使用してクライアントによって検出できます。そのため、エフェメラル・ポートを使用することで、ポートの競合なくgRPCサーバーを起動することができます。
In-Process GrpcAcceptor is now listening for connections using name "default" GrpcAcceptor now listening for connections on 0.0.0.0:55550
サービスは、Coherence gRPCクライアント実装のいずれかからのリクエストを処理する準備ができています。
親トピック: Coherence gRPCプロキシ・サーバーの設定
サーバーの構成
gRPCサーバーの構成には、サーバー・リスニング・アドレスとポート、SSL/TLSおよびサーバー・スレッド・プールの構成が含まれます。
Coherence gRPCプロキシは、gRPCプロキシの単一の<proxy-scheme>
構成のみを含むgrpc-proxy-cache-config.xml
という内部デフォルト・キャッシュ構成ファイルを使用して構成されます。サーバーはシステム・プロパティと環境変数で構成できるため、構成ファイルをオーバーライドする必要はありません。
この項には次のトピックが含まれます:
サーバー・リスニング・アドレスの構成
実行時に、coherence.grpc.server.address
システム・プロパティまたはCOHERENCE_GRPC_SERVER_ADDRESS
環境変数を設定して、gRPCサーバーがバインドするアドレスを構成できます。
デフォルトでは、サーバーは、ローカル・ホストのすべてのネットワーク・インタフェースに相当するアドレス0.0.0.0
にバインドします。
たとえば、ホストにローカルIPアドレス192.168.0.25
がある場合、次のように、この特定のアドレスにバインドするようにサーバーを構成できます:
システム・プロパティの使用:
-Dcoherence.grpc.server.address=192.168.0.25
環境変数の使用:
export COHERENCE_GRPC_SERVER_ADDRESS=192.168.0.25
親トピック: サーバーの構成
サーバー・リスニング・ポートの構成
実行時に、coherence.grpc.server.port
システム・プロパティまたはCOHERENCE_GRPC_SERVER_PORT
環境変数を設定して、gRPCサーバーがバインドするポートを構成できます。
たとえば、ポート1408
でリスニングするようにサーバーを構成するには:
システム・プロパティの使用:
-Dcoherence.grpc.server.port=1408
環境変数の使用:
export COHERENCE_GRPC_SERVER_PORT=1408
親トピック: サーバーの構成
SSL/TLSの構成
他のCoherenceサービスと同様に、ソケット・プロバイダの名前を指定することで、SSLを使用するようにCoherence gRPCサーバーを構成できます。
名前付きソケット・プロバイダは、Coherence操作構成ファイル(オーバーライド・ファイル)tangosol-coherence-override.xml
で構成されます。
tangosol-coherence-override.xml
ファイルは次のようになります:
<socket-providers>
<socket-providerid="tls">
<ssl>
<identity-manager>
<keysystem-property="coherence.security.key">server.key</key>
<certsystem-property="coherence.security.cert">server.cert</cert>
</identity-manager>
<trust-manager>
<certsystem-property="coherence.security.ca.cert">server-ca.cert</cert>
</trust-manager>
</ssl>
</socket-provider>
</socket-providers>
名前付きソケット・プロバイダを構成した後、coherence.grpc.server.socketprovider
システム・プロパティまたはCOHERENCE_GRPC_SERVER_SOCKETPROVIDER
環境変数を設定して、そのプロバイダを使用するようにgRPCサーバーを構成できます。
たとえば、tls
という名前のソケット・プロバイダが操作構成ファイルtangosol-coherence-override.xml
で構成されている場合は、次のようにtls
を使用するようにgRPCサーバーを構成できます:
システム・プロパティの使用:
-Dcoherence.grpc.server.socketprovider=tls
環境変数の使用:
export COHERENCE_GRPC_SERVER_SOCKETPROVIDER=tls
ソケット・プロバイダおよびその構成方法の詳細は、『Oracle Coherenceの保護』のSSLを使用した通信の保護に関する項を参照してください。
親トピック: サーバーの構成
サーバー・スレッド・プールの構成
他のCoherenceサービスと同様に、gRPCサーバーは動的にサイズ設定されたスレッド・プールを使用してリクエストを処理します。動的サイジング・アルゴリズムが最適でないことが判明した場合は、最小スレッド数と最大スレッド数を調整してスレッド・プール・サイズを構成できます。
この項には次のトピックが含まれます:
親トピック: サーバーの構成
最小スレッド数の設定
スレッドの最小数を調整すると、負荷のバーストに対処するのに役立ちます。
動的プールが負荷の増加に迅速に対処する場合、スレッド数を適切な数に増やすのに時間がかかることがあります。最小サイズを設定すると、負荷を処理する特定の数のスレッドが常に存在することが保証されます。
coherence.grpc.server.threads.min
システム・プロパティまたはCOHERENCE_GRPC_SERVER_THREADS_MIN
環境変数を使用して、プール内のスレッドの最小数を設定できます。
たとえば、次のように最小スレッド数を10に設定できます:
システム・プロパティの使用:
-Dcoherence.grpc.server.threads.min=10
環境変数の使用:
export COHERENCE_GRPC_SERVER_THREADS_MIN=10
親トピック: サーバー・スレッド・プールの構成
最大スレッド数の設定
最大スレッド数を調整すると、動的プールが高くなりすぎてCPUリソースを消費しすぎないようにするのに役立ちます。
coherence.grpc.server.threads.max
システム・プロパティまたはCOHERENCE_GRPC_SERVER_THREADS_MAX
環境変数を使用して、プール内のスレッドの最大数を設定できます。
ノート:
最大スレッド数と最小スレッド数の両方を指定する場合は、最大スレッド数を最小スレッド数より大きい値に設定する必要があります。
たとえば、次のように最大スレッド数を20に設定できます:
システム・プロパティの使用:
Dcoherence.grpc.server.threads.max=20
環境変数の使用:
export COHERENCE_GRPC_SERVER_THREADS_MAX=20
親トピック: サーバー・スレッド・プールの構成
gRPCプロキシ・サーバーの無効化
coherence-grpc-proxy
モジュールがクラス・パス(またはモジュール・パス)にある場合、Coherence gRPCサーバーは自動的に起動します。ただし、coherence.grpc.enabled
システム・プロパティをfalseに設定することで、サーバーを無効化できます。
親トピック: Coherence gRPCプロキシ・サーバーの使用
Helidon Microprofile gRPCサーバーを使用したプロキシ・サービスのデプロイ
マイクロプロファイルgRPCサーバーを有効にした状態でHelidon Microprofileサーバーを使用する場合は、CoherenceのデフォルトのgRPCサーバーではなく、Helidon gRPCサーバーにCoherence gRPCプロキシをデプロイできます。
この動作が自動的に行われるようにするには、coherence.grpc.enabled
システム・プロパティをfalse
に設定し、組込みサーバーを無効にします。組込みのGrpcMpExtension
実装で、プロキシ・サービスがHelidon gRPCサーバーにデプロイされます。
Helidonの詳細は、Helidonのドキュメントを参照してください。
ノート:
Helidon MP gRPCサーバーを使用している場合、coherence.grpc.enabled
システム・プロパティをfalse
に設定していないと、Helidon gRPCサーバーとCoherenceのデフォルトgRPCサーバーの両方が起動します。両方のサーバーが異なるポートを使用するように構成していないかぎり、このイベントによってポート・バインドの問題が発生する可能性があります。
親トピック: Coherence gRPCプロキシ・サーバーの使用