当前位置: 首页 > 知识库问答 >
问题:

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

狄溪叠
2023-03-14

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

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

观察到,服务器端只有一个EventLoop线程在为该UDP通道工作,并且它非常忙于向套接字写入消息,因此对第二个和更高版本客户端的订阅请求的响应非常慢。

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

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

共有1个答案

苏骏
2023-03-14

简短的回答一般不。。。由于频道总是绑定到一个EventLoop上,因此只有一个线程处理它。也就是说,如果您使用本机epoll传输(仅在linux上工作),则可以使用EpollChannelOption。SO_REUSEPORT将多个通道s绑定到同一端口,这些端口由不同的EventLoops和SO线程s处理。

 类似资料:
  • 在使用Firebase云消息传递(FCM)的Firebase项目中,有一个用于云消息传递的自动生成的服务器密钥。FCM文档并没有指出可以且只能有一台服务器使用该自动生成的密钥(至少我可以找到)。但是,文档明确指出应该安全存储服务器密钥。 第一个问题:我是否错过了单个服务器记录的限制? 如果没有明确的限制,我确实会想到FCM可能会内置检查,以确保给定Firebase项目发送消息的请求仅来自单个IP地

  • 问题内容: 我正在制作一个Web应用程序,该应用程序需要检查远程服务器是否在线。当我从命令行运行它时,我的页面加载将达到完整的60秒(对于8个条目,它将随着更多线性增长)。 我决定在用户​​端执行ping操作。这样,我可以加载页面并让他们在浏览内容时等待“服务器在线”数据。 如果有人对以上问题有答案,或者他们知道一种可以使我的页面快速加载的解决方案,我一定会很感激的。 问题答案: 我发现有人通过非

  • 在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创

  • 问题内容: 我有一项下载文件并保存文件的服务,看来我只能指定一个权限。 要么 我都需要 问题答案: 一个Android 可以具有多个权限,但是权限是在应用程序级别而不是级别上授予的。 您的问题是您试图在文件的错误位置授予您的权限。 的属性指定实体使用服务必须拥有的权限,而不是授予的权限 。 您在您的顶层授予您的应用程序所有组件的权限:

  • 我最近注意到,就餐提供了使用服务器启动器的可能性。在本手册中报告: Repast Simphony 2.7中的新增功能是能够使用Web浏览器作为用户交互界面运行您的模型。基于浏览器的GUI具有以下功能: 列表项 2D网格、连续空间和地理(GIS)可视化(目前仅限于编辑样式) 标签式和自由形式可视化布局时间序列图 特工探测 模型参数设置 模型运行时交互(运行、停止、暂停等) 我试着用这种模式启动我的

  • 问题内容: 使用h:datatable,我们可以如下显示数据 杰姆斯 汤姆 rs 哈里 但我可以显示如下所示的内容: 杰姆斯2.汤姆 克里斯4.哈里 拉斐兹,阿比 问题答案: 您可以使用支持“ newspaperColumns”和“ newspaperOrientation”属性的t:dataTable组件。NewsColumns确定表格将被划分的列数,并且报纸定向在报纸表格中确定报纸列的方向。