群集接收器对象
目录
简介
接收器组件负责接收群集消息。正如您可能通过配置注意到的,接收消息和发送消息是两个不同的组件,这与许多其他框架不同,但这样做有充分的理由,即解耦如何发送消息与如何接收消息的逻辑。
接收器非常类似于 Tomcat 连接器,它是用于传入群集消息的线程池的基础。接收器非常简单,但此处管理了传入流量的所有套接字设置。
接收器
接收器支持非阻塞 org.apache.catalina.tribes.transport.nio.NioReceiver
接收器。
使用非阻塞接收器允许您使用非常有限的线程数来处理大量消息。通常的规则是,对于小型群集,每个群集节点使用 1 个线程,然后根据您的消息频率和硬件,您会发现最佳线程数在某个数字处达到峰值。
属性
通用属性
属性 | 说明 |
---|---|
className |
接收器组件的实现。org.apache.catalina.tribes.transport.nio.NioReceiver 由 Tomcat 提供。
|
地址 |
用于侦听传入流量的地址(网络接口)。与绑定地址相同。默认值为 auto ,并转换为 java.net.InetAddress.getLocalHost().getHostAddress() 。
|
直接 |
可能的值为 true 或 false 。如果希望接收器在从套接字读取数据时使用直接字节缓冲区,请将其设置为 true。
|
端口 |
传入数据的侦听端口。默认值为 4000 。为了避免端口冲突,接收器将自动绑定到 port <= bindPort < port+autoBind 范围内的可用端口。因此,例如,如果端口为 4000,并且 autoBind 设置为 10,则接收器将在 4000-4009 范围内的第一个可用端口上打开服务器套接字。
|
autoBind |
默认值为 100 。如果您希望自动避免端口冲突,请使用此值,集群接收器将尝试在 port 属性端口上打开服务器套接字,然后向上处理 autoBind 次数。
|
安全端口 | 安全侦听端口。此端口已启用 SSL。如果省略此属性,则不会打开 SSL 端口。默认值未设置,这意味着没有可用的 SSL 套接字。 |
udp 端口 | UDP 侦听端口。如果省略此属性,则不会打开 UDP 端口。默认值未设置,这意味着没有可用的 UDP 侦听器。 |
selectorTimeout |
NioReceiver 中轮询超时的毫秒值。在 JDK 的较旧版本中存在一些错误,现在应该全部清除,其中选择器从未唤醒。默认值为非常高的 5000 毫秒。
|
maxThreads |
接收器线程池中的最大线程数。默认值为 15 根据集群中的节点数、交换的消息数以及您正在运行的硬件调整此值。较高的值并不意味着更高的效率,请根据您自己的测试结果调整此值。
|
minThreads |
启动接收器时要创建的最小线程数。默认值为 6
|
maxIdleTime |
空闲线程终止前允许的最大毫秒数。默认值为 60000 毫秒。
|
ooBInline |
套接字 OOBINLINE 选项的布尔值。可能的值为 true 或 false 。
|
rxBufSize |
接收套接字上的接收器缓冲区大小。值为字节,默认值为 65536 字节。
|
txBufSize |
接收套接字上的发送缓冲区大小。值为字节,默认值为 25188 字节。
|
udpRxBufSize |
数据报套接字上的接收缓冲区大小。默认值为 25188 字节。
|
udpTxBufSize |
数据报套接字上的发送缓冲区大小。默认值为 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 方法退出后不得保留对该对象的引用。
|