群集傳送器物件
目錄
簡介
頻道傳送器元件負責透過網路傳遞傳出的群集訊息。在預設實作中,org.apache.catalina.tribes.transport.ReplicationTransmitter
,傳送器是一個相當空的殼,沒有太多邏輯,而相當複雜的 <Transport>
元件則實作實際的傳遞機制。
並行傳遞
在預設 transport
實作中,org.apache.catalina.tribes.transport.nio.PooledParallelSender
,Apache Tribes 實作了我們稱之為「並行傳遞」的機制。這表示我們可以同時傳送訊息到多個目的地(並行),並同時傳送兩則訊息到同一個目的地(並發)。將這兩者結合起來,我們就有了「並行傳遞」。
這在什麼時候有用?我們能想到最簡單的範例是,當你的程式碼的一部分正在傳送一則 10MB 的訊息,例如部署中的 war 檔案,而你需要傳送一則較小的 10KB 訊息,例如複製的 session,你不必等到 10MB 訊息傳送完畢,因為另一個執行緒會同時傳送較小的訊息。目前沒有中斷、暫停或優先順序機制可用,但請稍後再查看。
巢狀元素
巢狀元素 <Transport>
不是必需的,但建議使用,因為這是你會設定傳出訊息的所有 socket 選項的地方。請參閱其下方屬性。
屬性
常見傳送器屬性
屬性 | 說明 |
---|---|
className |
必需,唯一可用的實作是 org.apache.catalina.tribes.transport.ReplicationTransmitter
|
常見傳輸屬性
屬性 | 說明 |
---|---|
className |
傳送器元件的實作。Tomcat 提供 org.apache.catalina.tribes.transport.nio.PooledParallelSender 。
|
rxBufSize |
Socket 上的接收緩衝區大小。預設值為 25188 位元組。
|
txBufSize |
Socket 上的傳送緩衝區大小。預設值為 65536 位元組。
|
udpRxBufSize |
資料包 Socket 上的接收緩衝區大小。預設值為 25188 位元組。
|
udpTxBufSize |
資料包 Socket 上的傳送緩衝區大小。預設值為 65536 位元組。
|
directBuffer |
可能的值為 true 或 false 。當您希望接收器在寫入資料到 Socket 時使用直接位元組緩衝區時,請設為 true。預設值為 false
|
keepAliveCount |
在 Socket 關閉並為下一個要求重新開啟前,可透過 Socket 傳送的要求數。預設值為 -1 ,表示無限。
|
keepAliveTime |
連線在開啟後保持開啟的毫秒數。預設值為 -1 ,表示無限。
|
timeout |
設定 Socket 上的 SO_TIMEOUT 選項。此值以毫秒為單位,預設值為 3000 毫秒(3 秒)。此逾時會在訊息傳送嘗試開始時啟動,直到傳輸完成。對於 NIO Socket,這表示呼叫者可以保證我們不會嘗試傳送訊息超過此逾時值。對於封鎖式 IO 實作,這會直接轉換為 soTimeout。逾時不會產生重試嘗試,以保證應用程式執行緒的回傳。 |
maxRetryAttempts |
我們重試在 Socket 層級收到 IOException 的失敗訊息的次數。預設值為 1 ,表示我們會重試一次失敗的訊息。換句話說,我們將嘗試傳送訊息不超過兩次。一次是原始傳送,一次是 maxRetryAttempts 。
|
ooBInline |
Socket OOBINLINE 選項的布林值。可能的值為 true 或 false 。
|
soKeepAlive |
Socket SO_KEEPALIVE 選項的布林值。可能的值為 true 或 false 。
|
soLingerOn |
布林值,用於判斷是否使用 SO_LINGER Socket 選項。可能的值為 true 或 false 。預設值為 true 。
|
soLingerTime |
設定 SO_LINGER Socket 選項時間值。此值以秒為單位。預設值為 3 秒。
|
soReuseAddress |
socket SO_REUSEADDR 選項的布林值。可能的數值為 true 或 false 。
|
soTrafficClass |
設定 socket 的流量類別等級,數值介於 0 至 255 之間。預設值為 int soTrafficClass = 0x04 | 0x08 | 0x010; 不同的數值定義於 java.net.Socket#setTrafficClass(int)。
|
tcpNoDelay |
socket TCP_NODELAY 選項的布林值。可能的數值為 true 或 false 。預設值為 true
|
throwOnFailedAck |
布林值,預設值為 true 。如果設定為 true,當我們從遠端成員收到負面確認時,傳送者會擲出 org.apache.catalina.tribes.RemoteProcessException 。設定為 false,Tribes 會將正面確認視為負面確認,即訊息已收到。
|
常見 PooledSender 屬性
屬性 | 說明 |
---|---|
poolSize |
從 A 到 B 的最大並行連線數。數值基於每個目的地計數。預設值為 25
|
maxWait |
當沒有可用傳送者時,senderPool 會等待的最大毫秒數。預設值為 3000 毫秒(3 秒)。
|