- 简介
- 可用的拦截器
- 静态成员资格
- 属性
- 通用属性
- 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 。
|
加密密钥 | 与加密算法一起使用的密钥。密钥应指定为算法的适当长度的十六进制编码字节(例如,AES-128 为 16 字节/32 个字符/128 位,AES-256 为 32 字节/64 个字符/256 位,依此类推)。 |
嵌套组件
StaticMember 属性
LocalMember
静态成员,是静态集群组的本地成员。
属性 | 说明 |
---|---|
className |
仅提供一个实现:org.apache.catalina.tribes.membership.StaticMember
|
端口 | 无需设置。此属性的值继承自集群接收器设置。 |
安全端口 | 无需设置。此属性的值继承自集群接收器设置。 |
主机 | 无需设置。此属性的值继承自集群接收器设置。 |
domain |
此静态成员侦听集群消息的逻辑集群域。可能存在两种不同类型的值 1. 将“staging-domain”或“tomcat-cluster”等常规字符串值使用 ISO-8859-1 编码转换为字节。2. 字符串形式的字节数组,例如 {216,123,12,3} |
唯一 ID |
此静态成员的通用唯一 ID。值必须为以下形式的 16 个字节 1. 字符串形式的字节数组,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |
成员
添加到静态集群组的静态成员。
属性 | 说明 |
---|---|
className |
仅提供一个实现:org.apache.catalina.tribes.membership.StaticMember
|
端口 | 此静态成员侦听集群消息的端口 |
安全端口 |
此静态成员侦听加密集群消息的安全端口,默认值为 -1 ,此值表示成员未在安全端口上侦听
|
主机 |
此静态成员侦听集群消息的主机(或网络接口)。可能存在三种不同类型的值 1. “216.123.1.23”形式的 IP 地址 2. 只要正确解析,主机名,例如“tomcat01.mydomain.com”或“tomcat01” 3. 字符串形式的字节数组,例如 {216,123,12,3} |
domain |
此静态成员侦听集群消息的逻辑集群域。可能存在两种不同类型的值 1. 普通字符串值,如“staging-domain”或“tomcat-cluster”,将使用 ISO-8859-1 编码转换为字节。 2. 字符串形式的字节数组,例如 {216,123,12,3} |
唯一 ID |
此静态成员的通用唯一 ID。值必须为以下形式的 16 个字节 1. 字符串形式的字节数组,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |