- 简介
- 可用拦截器
- 静态成员关系
- 属性
- 通用属性
- 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
,EncryptInterceptor
必须插入到拦截器链中,并且在 TcpFailureDetector
之前。这是因为在验证集群成员时,TcpFailureDetector
会直接将通道数据写入其他成员,而无需使用拦截器链的其余部分,但在接收端,消息仍然会通过链(反向)。由于这种不对称性,EncryptInterceptor
必须在发送方在 TcpFailureDetector
之前执行,在接收方在 TcpFailureDetector
之后执行,否则将发生消息损坏。
属性 | 描述 |
---|---|
encryptionAlgorithm | 要使用的加密算法,包括模式和填充。有关可用的标准 JCA 名称,请参阅 https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html。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 | 此静态成员的全局唯一 ID。值必须是以下形式的 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 | 此静态成员的全局唯一 ID。值必须是以下形式的 16 字节: 1. 字符串形式的字节数组,例如 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} |