gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:36 29 4
gpt4 key购买 nike

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

设计是让 Java Executor 创建一些生产者/消费者线程。一旦消息生成,消费者线程会将其写入UDP channel 。

观察发现,服务器端只有一个 EventLoop 线程在该 UDP channel 上工作,并且它非常忙于向套接字写入消息,因此对第二个及之后的客户端订阅请求的响应非常慢。

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

顺便说一句,服务器端 Netty 处理程序非常简单:日志处理程序、解码器处理程序、编码器处理程序和订阅处理程序。

最佳答案

简短的回答一般来说不会...由于 Channel 始终与一个 EventLoop 绑定(bind),因此只有一个线程处理它。也就是说,如果您使用 native epoll 传输(仅适用于 Linux),您可以使用 EpollChannelOption.SO_REUSEPORT 将多个 Channel 绑定(bind)到同一端口,这些端口由不同的 EventLoop 和 Thread 处理。

关于java - Netty UDP 服务器可以有多个 eventloop 线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43523875/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com