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

Netty 4.0多端口,每个端口具有不同的协议

毋宏茂
2023-03-14

我想netty是我所知道的最好的java网络框架,在阅读并尝试一些示例后,我有疑问:

1.使用netty 4.0为具有不同协议的多端口创建网络服务器的最佳方法是什么?

每个服务器创建:

EventLoopGroup bossGroup=new NioEventLoopGroup();//(1)

EventLoopGroup workerGroup=新的NioEventLoopGroup();

ServerBootstrap b=新的ServerBootstrap();//(2)

在线程内运行的每个服务器

这样对吗?

2.网络插座服务器

如何为跨源案例保护Websocket服务器?关于这件事我没有任何参考资料

非常感谢你的帮助,

问候

BC,

共有2个答案

夔建章
2023-03-14

我将在ServerBootstrap之间共享NioEventLoopGroup以共享相同的线程。

范弘亮
2023-03-14

正如Norman所说,重要的是您需要共享事件循环组,这样您就不会创建太多的线程。只要共享事件循环组,就可以根据需要创建任意多的ServerBootstraps:

EventLoopGroup bossGroup = new NioEventLoopGroup(numBossThreads);
EventLoopGroup workerGroup = new NioEventLoopGroup(numWorkerThreads);

ServerBootstrap sb1 = new ServerBootstrap();
sb1.group(bossGroup, workerGroup);
...
sb1.bind();

ServerBootstrap sb2 = new ServerBootstrap();
sb2.group(bossGroup, workerGroup);
...
sb2.bind();

ServerBootstrap sb3 = new ServerBootstrap();
sb3.group(bossGroup, workerGroup);
...
sb3.bind();

bossGroup用于接受传入的连接,workerGroup用于处理bossGroup接受的连接。请进行一些性能测试,并指定最佳的numbosthreadsnumWorkerThreads

 类似资料:
  • 我有三个tomcat容器运行在不同的网桥网络与不同的子网和网关例如: 这些容器在不同的端口上运行,如8081, 8082, 8083 有没有办法在同一个8081中运行所有三个容器?如果可能的话,我怎么能在docker做呢。

  • 例如,我可以启动两个程序侦听端口371。第二个没有任何问题地启动并接收传入连接,而第一个没有。一旦最后开始的进程终止,第一个接收它们。 假设这是Windows(XP)行为,它怎么可能是安全的行为呢?这意味着人们可以“过载”任何已经侦听的端口,而不是获得通常的“地址已经在使用”错误消息,并简单地绕过防火墙,规则只是说“允许端口371上的任何传入TCP连接”。

  • 我目前正在Spring Boot 2.4.0中编写一个应用程序,它需要侦听多个端口(具体来说是3个-但将来可能是4个)。这个想法是每个端口都提供不同的API供其他服务/应用程序连接到它。 所以,对于一个最小的工作示例,我会说我们有一个像这样的SpringBootApp: 现在,我想让它在3个不同的端口上监听,比如8080、8081和8082。所有人(!)对其中一个端口的请求,应由特定控制器“负责”

  • 我有一个依赖于多个docker容器的应用程序。我使用docker撰写,以便所有容器都在同一个网络中进行容器间通信。但是,我的两个容器在各自的容器中监听相同的端口8080,但是映射到主机上的不同端口: 8072,8073。对于集装箱间的通信,因为我们使用集装箱的端口,这会引起问题吗? 限制条件: 我需要两个容器才能运行我的应用程序。因此,我无法将具有相同内部端口的其他容器隔离到不同的网络 所有容器都

  • 我正在尝试启动一个接受4个不同端口连接的第三方服务: x-deployment.yaml x服务。亚马尔 进入。亚马尔 默认情况下,GKE LoadBalancer在HTTP:80上运行运行状况检查,如果我启动后端服务(

  • 问题内容: 我有一个要 并行 处理的文件夹名称字典。在每个文件夹,里面是文件名的数组,我想在加工 系列 : 最终,我将创建一个名为的文件夹,其中包含名称为的文件。我有这样的方法: 请注意上面的内容,由于通过UDP端口进行的调用会花费很长时间。我也仅限于在上面的阵列中使用UDP端口。因此,我必须等待UDP端口完成操作,然后才能再次使用该UDP端口。这意味着我一次只能运行线程。 因此,我最终将通过调用