群集接收器物件

目錄

簡介

接收器元件負責接收群集訊息。您可能從設定中注意到,訊息接收和訊息傳送是兩個不同的元件,這與許多其他架構不同,但這樣做有充分的理由,就是將訊息傳送的邏輯與訊息接收的方式分開。
接收器非常類似於 Tomcat Connector,它是用於接收群集訊息的執行緒池的基礎。接收器很直觀,但所有用於接收流量的 socket 設定都在這裡管理。

接收器

接收器支援非封鎖的 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 可能的值為 truefalse。如果您希望接收器在從 socket 讀取資料時使用直接 bytebuffer,請設定為 true。
port 傳入資料的偵聽埠。預設值為 4000。為避免埠衝突,接收器會自動繫結到 port <= bindPort < port+autoBind 範圍內的可用埠。例如,如果埠為 4000,而 autoBind 設定為 10,則接收器將在 4000-4009 範圍內的第一個可用埠上開啟伺服器 socket。
autoBind 預設值為 100。如果您希望自動避免埠衝突,請使用此值,群集接收器將嘗試在 port 屬性埠上開啟伺服器 socket,然後執行 autoBind 次數。
securePort 安全的偵聽埠。此埠已啟用 SSL。如果省略此屬性,則不會開啟 SSL 埠。預設值未設定,表示沒有可用的 SSL socket。
udpPort UDP 偵聽埠。如果省略此屬性,則不會開啟 UDP 埠。預設值未設定,表示沒有可用的 UDP 偵聽器。
selectorTimeout NioReceiver 中輪詢逾時的值(以毫秒為單位)。在 JDK 的舊版本中,存在一些錯誤,這些錯誤現在都應該已清除,其中選擇器從未喚醒。預設值為非常高的 5000 毫秒。
maxThreads 接收器執行緒池中的最大執行緒數。預設值為 15。根據群集中節點的數量、交換的訊息數量以及您執行的硬體,調整此值。較高的值並不表示效率較高,請根據您自己的測試結果調整此值。
minThreads 接收器啟動時建立的最少執行緒數目。預設值為 6
maxIdleTime 閒置執行緒終止前最長毫秒數。預設值為 60000 毫秒。
ooBInline Socket OOBINLINE 選項的布林值。可能的值為 truefalse
rxBufSize 接收 Socket 上的接收器緩衝區大小。值以位元組為單位,預設值為 65536 位元組。
txBufSize 接收 Socket 上的傳送緩衝區大小。值以位元組為單位,預設值為 25188 位元組。
udpRxBufSize 資料報 Socket 上的接收緩衝區大小。預設值為 25188 位元組。
udpTxBufSize 資料報 Socket 上的傳送緩衝區大小。預設值為 65536 位元組。
soKeepAlive Socket SO_KEEPALIVE 選項的布林值。可能的值為 truefalse
soLingerOn 布林值,用於判斷是否使用 SO_LINGER Socket 選項。可能的值為 truefalse。預設值為 true
soLingerTime 設定 SO_LINGER Socket 選項時間值。值以秒為單位。預設值為 3 秒。
soReuseAddress Socket SO_REUSEADDR 選項的布林值。可能的值為 truefalse
tcpNoDelay Socket TCP_NODELAY 選項的布林值。可能的值為 truefalse。預設值為 true
timeout 在 Socket 上設定 SO_TIMEOUT 選項。值以毫秒為單位,預設值為 3000 毫秒。
useBufferPool 布林值,表示是否使用快取的 org.apache.catalina.tribes.io.XByteBuffer 物件的共用緩衝區池。如果設定為 true,用於將訊息傳遞到通道的 XByteBuffer 將在要求結束時回收。這表示通道中的攔截器在 org.apache.catalina.tribes.ChannelInterceptor#messageReceived 方法結束後,不得保留對物件的參照。

NioReceiver

BioReceiver