群集傳送器物件

目錄

簡介

頻道傳送器元件負責透過網路傳遞傳出的群集訊息。在預設實作中,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 可能的值為 truefalse。當您希望接收器在寫入資料到 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 選項的布林值。可能的值為 truefalse
soKeepAlive Socket SO_KEEPALIVE 選項的布林值。可能的值為 truefalse
soLingerOn 布林值,用於判斷是否使用 SO_LINGER Socket 選項。可能的值為 truefalse。預設值為 true
soLingerTime 設定 SO_LINGER Socket 選項時間值。此值以秒為單位。預設值為 3 秒。
soReuseAddress socket SO_REUSEADDR 選項的布林值。可能的數值為 truefalse
soTrafficClass 設定 socket 的流量類別等級,數值介於 0 至 255 之間。預設值為 int soTrafficClass = 0x04 | 0x08 | 0x010; 不同的數值定義於 java.net.Socket#setTrafficClass(int)
tcpNoDelay socket TCP_NODELAY 選項的布林值。可能的數值為 truefalse。預設值為 true
throwOnFailedAck 布林值,預設值為 true。如果設定為 true,當我們從遠端成員收到負面確認時,傳送者會擲出 org.apache.catalina.tribes.RemoteProcessException。設定為 false,Tribes 會將正面確認視為負面確認,即訊息已收到。

常見 PooledSender 屬性

屬性 說明
poolSize 從 A 到 B 的最大並行連線數。數值基於每個目的地計數。預設值為 25
maxWait 當沒有可用傳送者時,senderPool 會等待的最大毫秒數。預設值為 3000 毫秒(3 秒)。