クラスタレシーバーオブジェクト

目次

はじめに

レシーバーコンポーネントは、クラスタメッセージの受信を担当します。設定を通して気付くかもしれませんが、メッセージの受信と送信は2つの異なるコンポーネントです。これは他の多くのフレームワークとは異なりますが、メッセージの送信方法とメッセージの受信方法のロジックを分離するための正当な理由があります。
レシーバーはTomcatコネクターによく似ており、受信クラスタメッセージ用のスレッドプールのベースです。レシーバーは単純ですが、受信トラフィックのすべてのソケット設定はここで管理されます。

Receiver

レシーバーは、非ブロッキングの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ソケットが利用できないことを意味します。
udpPortUDPリスンポート。この属性が省略されている場合、UDPポートは開かれません。デフォルト値は設定されておらず、UDPリスナーが利用できないことを意味します。
selectorTimeoutNioReceiverでのポーリングタイムアウトのミリ秒単位の値。古いバージョンの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です。
soLingerOnSO_LINGERソケットオプションを使用するかどうかを決定するブール値。可能な値はtrueまたはfalseです。デフォルト値はtrueです。
soLingerTimeSO_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メソッドが終了した後、オブジェクトへの参照を保持してはなりません。

NioReceiver

BioReceiver