- 簡介
- 可用的攔截器
- 靜態成員資格
- 屬性
- 共用屬性
- org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor 屬性
- org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor 屬性
- org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor 屬性
- org.apache.catalina.tribes.group.interceptors.TcpFailureDetector 屬性
- org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor 屬性
- org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor 屬性
- org.apache.catalina.tribes.group.interceptors.EncryptInterceptor 屬性
- 巢狀元件
頻道攔截器物件
目錄
簡介
Apache Tribes 支援攔截器架構,以攔截訊息和成員資格通知。此架構允許邏輯解耦,並為一些非常有用的功能附加元件開啟途徑。
可用的攔截器
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor
org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator
org.apache.catalina.tribes.group.interceptors.OrderInterceptor
org.apache.catalina.tribes.group.interceptors.SimpleCoordinator
org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor
org.apache.catalina.tribes.group.interceptors.TwoPhaseCommitInterceptor
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor
org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor
org.apache.catalina.tribes.group.interceptors.GzipInterceptor
org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor
org.apache.catalina.tribes.group.interceptors.EncryptInterceptor
靜態成員資格
除了動態發現外,Apache Tribes 還支援靜態成員資格,並進行成員資格驗證。若要達成此目的,請在 org.apache.catalina.tribes.group.interceptors.TcpFailureDetector
攔截器之後新增 org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor
。您可以在 StaticMembershipInterceptor
內部新增您希望擁有的靜態成員。TcpFailureDetector
會對靜態成員執行健康檢查,並監控它們是否發生崩潰,因此它們將具有與自動發現的成員相同的通知機制層級。
<Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
<LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
domain="staging-cluster"
uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1}"/>
<Member className="org.apache.catalina.tribes.membership.StaticMember"
port="5678"
securePort="-1"
host="tomcat01.mydomain.com"
domain="staging-cluster"
uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"/>
</Interceptor>
屬性
共用屬性
屬性 | 說明 |
---|---|
className | 必填,因為沒有預設值 |
optionFlag |
如果您希望攔截器根據訊息的選項旗標觸發某些訊息,您可以在這裡設定攔截器的旗標。預設值為 0 ,表示此攔截器會觸發所有訊息。
|
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor 屬性
屬性 | 說明 |
---|---|
domain |
此攔截器接受的邏輯叢集網域。可能的值有兩種 1. 常規字串值,例如「staging-domain」或「tomcat-cluster」,將使用 ISO-8859-1 編碼轉換成位元組。 2. 字串形式的位元組陣列,例如 {216,123,12,3} |
logInterval | 此值表示來自不同網域的訊息記錄間隔。預設值為 100,表示每 100 則訊息記錄一次。 |
org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor 屬性
屬性 | 說明 |
---|---|
expire | 我們在記憶體中保留片段並等待其餘片段到達的時間。預設值為 60000 毫秒。 |
maxSize | 訊息的最大大小(以位元組為單位)。如果訊息大小超過此值,此攔截器會將訊息分段並傳送。如果小於此值,此攔截器不會將訊息分段,而是傳送為一則訊息。預設值為 1024*100。 |
org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor 屬性
屬性 | 說明 |
---|---|
optionFlag |
預設且硬編碼的值為 8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS) 。調度器只會觸發此值,因為它是 Tribes 預先定義的。
|
alwaysSend |
當傳送佇列已滿時應執行的行為。如果為 true (預設值),則會同步傳送訊息;如果為 false ,則會擲回錯誤。
|
maxQueueSize |
傳送佇列的大小(以位元組為單位),預設值為 1024*1024*64 (64 MiB) ,如果佇列已滿,則會設定傳送佇列的最大佇列大小,如果將 alwaysSend 設定為 true,則會同步傳送訊息;如果旗標為 false,則會擲回錯誤
|
maxThreads | 此池中的最大執行緒數,預設值為 10。 |
maxSpareThreads | 池中要保留的執行緒數,預設值為 2。 |
keepAliveTime | 閒置執行緒終止前等待的最大毫秒數。預設值為 5000(5 秒)。 |
org.apache.catalina.tribes.group.interceptors.TcpFailureDetector 屬性
屬性 | 說明 |
---|---|
connectTimeout | 嘗試與可疑節點建立 TCP 連線時使用的逾時時間(以毫秒為單位)。預設值為 1000。 |
performSendTest | 如果設定為 true,則會傳送測試訊息至可疑節點。預設值為 true。 |
performReadTest |
如果設為 true,請讀取已發送測試訊息的回應。預設為 false。注意:如果 performSendTest 為 false,此屬性將不會生效。
|
readTestTimeout | 指定在對可疑節點執行讀取測試時要使用的逾時時間(以毫秒為單位)。預設為 5000。 |
removeSuspectsTimeout | 從 removeSuspects 中移除的最長時間(以秒為單位)。removeSuspects 的成員在 removeSuspectsTimeout 之後將自動移除。如果指定負值,則 removeSuspects 成員將永遠不會被移除,直到真正消失。如果未提供屬性,則使用 300 秒(5 分鐘)的預設值。 |
org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor 屬性
屬性 | 說明 |
---|---|
interval | 如果 useThread == true,則定義傳送 ping 訊息的間隔。預設為 1000 毫秒。 |
useThread | 是否啟動執行緒以傳送 ping 訊息的旗標。如果設為 true,此攔截器將啟動一個本機執行緒以傳送 ping 訊息。如果設為 false,則頻道心跳將傳送 ping 訊息。預設為 false。 |
org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor 屬性
屬性 | 說明 |
---|---|
interval |
定義訊息數量中的間隔,我們將在此間隔中報告吞吐量統計資料。報告會記錄到 org.apache.juli.logging.LogFactory.getLog(ThroughputInterceptor.class) 記錄器中的 INFO 層級。預設值是每 10000 則訊息報告一次。
|
org.apache.catalina.tribes.group.interceptors.EncryptInterceptor 屬性
EncryptInterceptor 會將加密新增到在節點之間傳送會話資料的頻道訊息中。
如果使用 TcpFailureDetector
,則 必須 在 TcpFailureDetector
之前 將 EncryptInterceptor
插入攔截器鏈中。這是因為在驗證叢集成員時,TcpFailureDetector
會將頻道資料直接寫入其他成員,而不會使用攔截器鏈的其餘部分,但在接收端,訊息仍會通過鏈(反向)。由於這種不對稱性,EncryptInterceptor
必須在傳送端在 TcpFailureDetector
之前 執行,而在接收端在 TcpFailureDetector
之後 執行,否則會發生訊息損毀。
屬性 | 說明 |
---|---|
encryptionAlgorithm |
要使用的加密演算法,包括模式和填充。請參閱 https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html 以取得可使用的標準 JCA 名稱。EncryptInterceptor 目前支援下列 區塊密碼模式:CBC、OFB、CFB 和 GCM。如果適用,金鑰長度將指定要使用的加密演算法類型(例如 AES-128 與 AES-256)。預設演算法為 AES/CBC/PKCS5Padding 。
|
encryptionKey | 要與加密演算法一起使用的金鑰。金鑰應指定為演算法適當長度的十六進位編碼位元組(例如 AES-128 的 16 位元組/32 個字元/128 位元,AES-256 的 32 位元組/64 個字元/256 位元,等等)。 |
巢狀元件
StaticMember 屬性
LocalMember
靜態成員,為靜態叢集群組的本機成員。
屬性 | 說明 |
---|---|
className |
僅提供一個實作:org.apache.catalina.tribes.membership.StaticMember
|
port | 無需設定。此屬性的值會繼承自叢集接收器設定。 |
securePort | 無需設定。此屬性的值會繼承自叢集接收器設定。 |
host | 無需設定。此屬性的值會繼承自叢集接收器設定。 |
domain |
此靜態成員用於偵聽叢集訊息的邏輯叢集網域。有兩種不同的值類型 1. 一般字串值,例如「staging-domain」或「tomcat-cluster」,會使用 ISO-8859-1 編碼轉換為位元組。2. 字串形式的位元組陣列,例如 {216,123,12,3} |
uniqueId |
此靜態成員的通用唯一識別碼。值必須為 16 個位元組,格式如下 1. 字串形式的位元組陣列,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
Member
靜態成員,新增至靜態叢集群組。
屬性 | 說明 |
---|---|
className |
僅提供一個實作:org.apache.catalina.tribes.membership.StaticMember
|
port | 此靜態成員用於偵聽叢集訊息的埠 |
securePort |
此靜態成員用於偵聽加密叢集訊息的安全埠,預設值為 -1 ,此值表示成員未在安全埠上偵聽
|
host |
此靜態成員用於偵聽叢集訊息的主機 (或網路介面)。有三個不同的值類型 1. IP 位址,格式為「216.123.1.23」 2. 主機名稱,例如「tomcat01.mydomain.com」或「tomcat01」,只要能正確解析即可 3. 字串形式的位元組陣列,例如 {216,123,12,3} |
domain |
此靜態成員用於偵聽叢集訊息的邏輯叢集網域。有兩種不同的值類型 1. 常規字串值,例如「staging-domain」或「tomcat-cluster」,將使用 ISO-8859-1 編碼轉換成位元組。 2. 字串形式的位元組陣列,例如 {216,123,12,3} |
uniqueId |
此靜態成員的通用唯一識別碼。值必須為 16 個位元組,格式如下 1. 字串形式的位元組陣列,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |