クラスタレシーバーオブジェクト
目次
はじめに
レシーバーコンポーネントは、クラスタメッセージの受信を担当します。設定を通して気づかれるかもしれませんが、メッセージの受信と送信は2つの異なるコンポーネントであり、これは他の多くのフレームワークとは異なりますが、メッセージの送信方法と受信方法のロジックを分離するという良い理由があります。
レシーバーはTomcatのコネクターと非常によく似ており、受信クラスタメッセージ用のスレッドプールの基盤です。レシーバーは単純ですが、受信トラフィックのすべてのソケット設定はここで管理されます。
レシーバー
レシーバーは、非ブロッキングの org.apache.catalina.tribes.transport.nio.NioReceiver
レシーバーをサポートしています。
非ブロッキングレシーバーを使用すると、非常に限られたスレッド数で多数のメッセージを処理できます。通常、小規模クラスタではクラスタ内のノードごとに1つのスレッドを使用することが推奨され、メッセージの頻度とハードウェアに応じて、最適なスレッド数が特定の数でピークに達することを発見するでしょう。
属性
共通属性
属性 | 説明 |
---|---|
className | レシーバーコンポーネントの実装です。org.apache.catalina.tribes.transport.nio.NioReceiver はTomcatによって提供されます。 |
address | 受信トラフィックをリッスンするアドレス(ネットワークインターフェース)です。バインドアドレスと同じです。デフォルト値はauto で、java.net.InetAddress.getLocalHost().getHostAddress() に変換されます。 |
direct | 指定可能な値はtrue またはfalse です。ソケットからデータを読み取る際にレシーバーが直接バイトバッファを使用するようにしたい場合は、trueに設定します。 |
port | 受信データ用のリッスンポートです。デフォルト値は4000 です。ポートの競合を避けるため、レシーバーはport <= bindPort < port+autoBind の範囲内で自動的に空いているポートにバインドします。例えば、ポートが4000で、autoBind が10に設定されている場合、レシーバーは4000-4009の範囲で最初に利用可能なポートでサーバーソケットを開きます。 |
autoBind | デフォルト値は100 です。ポートの競合を自動的に避けたい場合、この値を使用します。クラスタレシーバーはport 属性のポートでサーバーソケットを開こうとし、その後、autoBind 回数だけ試行します。 |
securePort | セキュアなリッスンポートです。このポートはSSLが有効です。この属性が省略された場合、SSLポートは開かれません。デフォルト値は未設定で、SSLソケットが利用できないことを意味します。 |
udpPort | UDPリッスンポートです。この属性が省略された場合、UDPポートは開かれません。デフォルト値は未設定で、UDPリスナーが利用できないことを意味します。 |
selectorTimeout | NioReceiver でのポーリングタイムアウトのミリ秒単位の値です。以前のJDKバージョンには、セレクターが起動しないバグがありましたが、これらはすべて解消されているはずです。デフォルト値は非常に高い5000 ミリ秒です。 |
maxThreads | レシーバースレッドプール内の最大スレッド数です。デフォルト値は15 です。この値は、クラスタ内のノード数、交換されるメッセージ数、および実行しているハードウェアに合わせて調整してください。値が高いほど効率が良いとは限らないため、独自のテスト結果に基づいてこの値を調整してください。 |
minThreads | レシーバーが起動したときに作成される最小スレッド数です。デフォルト値は6 です。 |
maxIdleTime | アイドルスレッドが終了するまでの最大ミリ秒数です。デフォルト値は60000 ミリ秒です。 |
ooBInline | ソケットのOOBINLINEオプションのブール値です。指定可能な値はtrue またはfalse です。 |
rxBufSize | 受信ソケット上のレシーバーバッファサイズです。値はバイト単位で、デフォルト値は65536 バイトです。 |
txBufSize | 受信ソケット上の送信バッファサイズです。値はバイト単位で、デフォルト値は25188 バイトです。 |
udpRxBufSize | データグラムソケット上の受信バッファサイズです。デフォルト値は25188 バイトです。 |
udpTxBufSize | データグラムソケット上の送信バッファサイズです。デフォルト値は65536 バイトです。 |
soKeepAlive | ソケットのSO_KEEPALIVEオプションのブール値です。指定可能な値はtrue またはfalse です。 |
soLingerOn | SO_LINGERソケットオプションを使用するかどうかを決定するブール値です。指定可能な値はtrue またはfalse です。デフォルト値はtrue です。 |
soLingerTime | SO_LINGERソケットオプションの時間値を設定します。値は秒単位で、デフォルト値は3 秒です。 |
soReuseAddress | ソケットのSO_REUSEADDRオプションのブール値です。指定可能な値はtrue またはfalse です。 |
tcpNoDelay | ソケットのTCP_NODELAYオプションのブール値です。指定可能な値はtrue またはfalse です。デフォルト値はtrue です。 |
timeout | ソケットにSO_TIMEOUTオプションを設定します。値はミリ秒単位で、デフォルト値は3000 ミリ秒です。 |
useBufferPool | キャッシュされたorg.apache.catalina.tribes.io.XByteBuffer オブジェクトの共有バッファプールを使用するかどうかのブール値です。trueに設定すると、チャネルを介してメッセージを渡すために使用されるXByteBuffer は、リクエストの終了時にリサイクルされます。これは、チャネル内のインターセプターが、org.apache.catalina.tribes.ChannelInterceptor#messageReceived メソッドの終了後もオブジェクトへの参照を維持してはならないことを意味します。 |