クラスタチャネルオブジェクト

目次

はじめに

クラスタチャネルは、Apache Tribesというニックネームを付けた小規模フレームワークの主要コンポーネントです。
チャネルは、サブコンポーネントのセットを管理し、それらをまとめてグループ通信フレームワークを作成します。
このフレームワークは、異なるTomcatインスタンス間でメッセージを送信する必要があるコンポーネントによって内部的に使用されます。
これらのコンポーネントの例としては、DeltaManagerのメッセージングを行うSimpleTcpClusterや、異なるレプリケーション戦略を使用するBackupManagerなどがあります。ReplicatedContextオブジェクトも、コンテキスト属性の変更を伝えるためにチャネルオブジェクトを使用します。

ネストされたコンポーネント

チャネル/メンバーシップ:
メンバーシップコンポーネントは、クラスタ内の新しいノードを自動的に検出し、ハートビートで応答していないノードの通知を提供する役割を担います。デフォルトの実装ではマルチキャストを使用します。
メンバーシップコンポーネントでは、ノード(別名メンバー)をどのように検出または分割するかを設定します。Apache Tribes について詳しくは、こちらをご覧ください。

チャネル/送信者:
送信者コンポーネントは、あるノードから別のノードにネットワーク経由で送信されるすべての発信接続とデータメッセージを管理します。このコンポーネントを使用すると、メッセージを並列に送信できます。デフォルトの実装ではTCPクライアントソケットを使用し、発信メッセージのソケットチューニングはここで設定します。
Apache Tribes について詳しくは、こちらをご覧ください。

チャネル/送信者/トランスポート:
トランスポートコンポーネントは、送信者コンポーネントの最下層IOレイヤーです。デフォルトの実装では、非ブロッキングTCPクライアントソケットを使用します。
Apache Tribes について詳しくは、こちらをご覧ください。

チャネル/受信者:
受信者コンポーネントは、他のノードからのメッセージをリッスンします。ここでは、クラスタスレッドプールを設定します。受信メッセージをスレッドプールにディスパッチして、処理を高速化するためです。デフォルトの実装では、非ブロッキングTCPサーバーソケットを使用します。
Apache Tribes について詳しくは、こちらをご覧ください。

チャネル/インターセプター:
チャネルは、インターセプタースタックを介してメッセージを送信します。このため、メッセージの送受信方法、さらにはメンバーシップの処理方法をカスタマイズできます。
Apache Tribes について詳しくは、こちらをご覧ください。

属性

共通属性

属性説明
classNameデフォルト値はorg.apache.catalina.tribes.group.GroupChannelで、現在利用可能な唯一の実装です。

org.apache.catalina.tribes.group.GroupChannel 属性

属性説明
heartbeatチャネルが独自のハートビートを管理するかどうかを示すフラグ。trueに設定すると、チャネルはハートビート用のローカルスレッドを開始します。このフラグをfalseに設定する場合は、SimpleTcpCluster#heartbeatBackgroundEnabledをtrueに設定する必要があります。デフォルト値はtrueです。
heartbeatSleeptimeheartbeatがtrueの場合、ハートビートスレッドの間隔をミリ秒単位で指定します。デフォルトは5000(5秒)です。
optionChecktrueに設定すると、GroupChannelは各インターセプターが使用しているオプションフラグをチェックします。2つのインターセプターが同じフラグを共有している場合はエラーを報告します。デフォルトはfalseです。
jmxEnabledチャネルコンポーネントがJMXに登録するかどうかを示すフラグ。デフォルト値はtrueです。
jmxDomainjmxEnabledがtrueに設定されている場合、このチャネルを登録するjmxドメインを指定します。デフォルト値としてClusterChannelが使用されます。
jmxPrefixjmxEnabledがtrueに設定されている場合、チャネルObjectNameで使用されるjmxプレフィックスを指定します。