集群接收器对象
目录
简介
接收器组件负责接收集群消息。您可能会从配置中注意到,消息的接收和发送是两个不同的组件,这与许多其他框架不同,但这样做有充分的理由,即解耦消息发送逻辑与消息接收逻辑。
接收器非常类似于 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(直接) | 可能的值为 true 或 false 。如果您希望接收器在从套接字读取数据时使用直接字节缓冲区,请设置为 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 选项的布尔值。可能的值为 true 或 false 。 |
rxBufSize(接收缓冲区大小) | 接收套接字上的接收缓冲区大小。值为字节,默认值为 65536 字节。 |
txBufSize(发送缓冲区大小) | 接收套接字上的发送缓冲区大小。值为字节,默认值为 25188 字节。 |
udpRxBufSize(UDP接收缓冲区大小) | 数据报套接字上的接收缓冲区大小。默认值为 25188 字节。 |
udpTxBufSize(UDP发送缓冲区大小) | 数据报套接字上的发送缓冲区大小。默认值为 65536 字节。 |
soKeepAlive | 套接字 SO_KEEPALIVE 选项的布尔值。可能的值为 true 或 false 。 |
soLingerOn | 布尔值,用于确定是否使用 SO_LINGER 套接字选项。可能的值为 true 或 false 。默认值为 true 。 |
soLingerTime | 设置 SO_LINGER 套接字选项的时间值。值为秒,默认值为 3 秒。 |
soReuseAddress | 套接字 SO_REUSEADDR 选项的布尔值。可能的值为 true 或 false 。 |
tcpNoDelay | 套接字 TCP_NODELAY 选项的布尔值。可能的值为 true 或 false 。默认值为 true |
timeout(超时) | 设置套接字上的 SO_TIMEOUT 选项。值为毫秒,默认值为 3000 毫秒。 |
useBufferPool(使用缓冲区池) | 布尔值,表示是否使用共享的 org.apache.catalina.tribes.io.XByteBuffer 对象缓存池。如果设置为 true,用于在通道上传递消息的 XByteBuffer 将在请求结束时被回收。这意味着通道中的拦截器在 org.apache.catalina.tribes.ChannelInterceptor#messageReceived 方法退出后不得保留对该对象的引用。 |