クラスタレシーバーオブジェクト
目次
はじめに
レシーバーコンポーネントは、クラスタメッセージの受信を担当します。設定を通して気付くかもしれませんが、メッセージの受信と送信は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ソケットが利用できないことを意味します。 |
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 メソッドが終了した後、オブジェクトへの参照を保持してはなりません。 |