※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Tomcat5.5.15でのTomcatCluster

パラメータが死ぬほど増えている。

replication mode

synchronous/pooled/asynchronous/fastasyncqueueの4つ。それぞれに対応するクラスは以下の通り。
synchronous=org.apache.catalina.cluster.tcp.SocketSender
pooled=org.apache.catalina.cluster.tcp.PooledSocketSender
asynchronous=org.apache.catalina.cluster.tcp.AsyncSocketSender
fastasyncqueue=org.apache.catalina.cluster.tcp.FastAsyncSocketSender
これは、org/apache/catalina/cluster/tcp/DataSenders.propertiesに指定されている。

synchronous

DataSenderを継承し、もっとも追加機能が無いもの。レプリケーションは1台のTomcatに対しsocket1本で行われる。

pooled

1Tomcatあたり最大25本(カスタマイズ可)で接続。

asynchronous

QueueとQueueThreadを使ってレプリケート。Queueに渡したところでsendMessageは返る。
QueueにはSmartQueueを使用。

fastasyncqueue

QueueとQueueThreadを使ってレプリケート。Queueに渡したところでsendMessageは返る。
QueueにはFastQueueを使用。FastQueueでは内部でLinkリストを保持し、与えられたObjectを全て繋げている。
そのため、FastQueueで取れるLinkObjectから直接nextを呼ぶことで、Queueの同期を減らすことができる。
これによりQueueに積む際の競合を減らしていると思われる。
レプリケートするスレッドは1つ。

DataSender

コンストラクタを見れば分かるとおり、ホスト&ポート毎に作成される。

waitForAck

レプリケーション完了の確認を待つかどうか。ソースはDataSender#waitForAck。10回readを実施し、TcpReplicationThread#sendAckメソッドで送ってくる{6,2,3}の3バイトのうち、最後の3が読めれば良い模様。
Traceレベルでログが出る。