Netty UDP服务器可以有多个eventloop线程吗?

时间:2017-04-20 15:28:50

标签: java multithreading netty

我正在尝试构建一个基于Netty的UDP服务器,根据客户端订阅不断向不同的客户端发布事件(大约每秒500个事件)(在订阅设置之前交换一些UDP请求/响应消息)。 / p>

设计是由Java Executors创建一些生产者/消费者线程。生成消息后,消费者线程会将其写入UDP通道。

观察到服务器端只有一个EventLoop线程用于该UDP通道,并且它非常忙于将消息写入套接字,因此对第二个及以后客户端的订阅请求的响应非常慢。

所以想知道是否有任何方法为NIO UDP服务器端启用多个工作线程,以便一个或几个线程忙于将发布事件写入套接字,我们仍然有其他线程来处理新的客户端订阅请求而没有延迟。任何建议都非常感谢。

不过,服务器端的Netty处理程序非常简单:日志记录处理程序,解码器处理程序,编码器处理程序和订阅处理程序。

1 个答案:

答案 0 :(得分:0)

简短回答一般没有...因为Channel总是绑定到一个EventLoop,所以只有一个线程处理它。也就是说,如果您使用本机epoll传输(仅适用于Linux),您可以使用EpollChannelOption.SO_REUSEPORT将多个Channel绑定到由不同EventLoop处理的同一端口,因此Thread秒。

相关问题