集群接收器对象

目录

简介

接收器组件负责接收集群消息。您可能会从配置中注意到,消息的接收和发送是两个不同的组件,这与许多其他框架不同,但这样做有充分的理由,即解耦消息发送逻辑与消息接收逻辑。
接收器非常类似于 Tomcat 连接器,它是用于传入集群消息的线程池的基础。接收器很简单,但所有传入流量的套接字设置都在此处进行管理。

接收器

接收器支持一个非阻塞的 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。如果您希望接收器在从套接字读取数据时使用直接字节缓冲区,请设置为 true。
port(端口)传入数据的监听端口。默认值为 4000。为避免端口冲突,接收器将自动绑定到 port <= bindPort < port+autoBind 范围内的空闲端口。例如,如果端口为 4000,autoBind 设置为 10,则接收器将在 4000-4009 范围内的第一个可用端口上打开服务器套接字。
autoBind(自动绑定)默认值为 100。如果您希望自动避免端口冲突,可以使用此值,集群接收器将尝试在 port 属性指定的端口上打开服务器套接字,然后向上尝试 autoBind 次。
securePort(安全端口)安全监听端口。此端口启用 SSL。如果省略此属性,则不打开 SSL 端口。默认值未设置,这意味着没有可用的 SSL 套接字。
udpPort(UDP端口)UDP 监听端口。如果省略此属性,则不打开 UDP 端口。默认值未设置,这意味着没有可用的 UDP 监听器。
selectorTimeout(选择器超时)NioReceiver 中轮询超时的毫秒值。在较旧的 JDK 版本中曾出现过选择器从未唤醒的 Bug,现在应该都已清除。默认值是一个非常高的 5000 毫秒。
maxThreads(最大线程数)接收器线程池中的最大线程数。默认值为 15。根据集群中的节点数量、交换的消息数量以及您运行的硬件来调整此值。更高的值并不意味着更高的效率,请根据您自己的测试结果调整此值。
minThreads(最小线程数)接收器启动时要创建的最小线程数。默认值为 6
maxIdleTime(最大空闲时间)空闲线程终止前的最大毫秒数。默认值为 60000 毫秒。
ooBInline套接字 OOBINLINE 选项的布尔值。可能的值为 truefalse
rxBufSize(接收缓冲区大小)接收套接字上的接收缓冲区大小。值为字节,默认值为 65536 字节。
txBufSize(发送缓冲区大小)接收套接字上的发送缓冲区大小。值为字节,默认值为 25188 字节。
udpRxBufSize(UDP接收缓冲区大小)数据报套接字上的接收缓冲区大小。默认值为 25188 字节。
udpTxBufSize(UDP发送缓冲区大小)数据报套接字上的发送缓冲区大小。默认值为 65536 字节。
soKeepAlive套接字 SO_KEEPALIVE 选项的布尔值。可能的值为 truefalse
soLingerOn布尔值,用于确定是否使用 SO_LINGER 套接字选项。可能的值为 truefalse。默认值为 true
soLingerTime设置 SO_LINGER 套接字选项的时间值。值为秒,默认值为 3 秒。
soReuseAddress套接字 SO_REUSEADDR 选项的布尔值。可能的值为 truefalse
tcpNoDelay套接字 TCP_NODELAY 选项的布尔值。可能的值为 truefalse。默认值为 true
timeout(超时)设置套接字上的 SO_TIMEOUT 选项。值为毫秒,默认值为 3000 毫秒。
useBufferPool(使用缓冲区池)布尔值,表示是否使用共享的 org.apache.catalina.tribes.io.XByteBuffer 对象缓存池。如果设置为 true,用于在通道上传递消息的 XByteBuffer 将在请求结束时被回收。这意味着通道中的拦截器在 org.apache.catalina.tribes.ChannelInterceptor#messageReceived 方法退出后不得保留对该对象的引用。

NioReceiver

BioReceiver