multithreading - 每个连接的 Netty 多线程

我是 netty 的新手。我想开发一个服务器,旨在接收来自可能很少(比如 Max 是 2 个)客户端的请求。但是每个客户端都会不断地向服务器发送许多请求。服务器必须处理此类请求并响应客户端。所以,在这里我假设即使我配置了多个工作线程,它也可能没有用,因为只有 2 个事件连接。工作线程再次阻塞,直到它处理并响应客户端。所以,请让我知道如何处理这些类型的问题。 如果我在工作线程中使用 threadpoolexecutor 以多线程方式处理两个客户端请求,它是否有效?或者如果它是通过 netty 框架实现的,请告诉我该怎么做? 提前致谢...

最佳答案

如果我理解正确:您的客户 (2) 将发送许多消息,每条消息都暗示服务器会尽快做出答复。

可以看到2个选项:

  1. 回答过程的时间很短(短到不会成为您想要达到的速率的问题,这意味着 1 个线程能够像您需要的那样快速回答 1 个客户):那么您可以继续使用在服务器 Bootstrap 中设置来自 Netty 的标准线程(一次用于 1 个客户端的 1 个工作线程)。这是最短路径。

  2. answear 进程时间不够短(速率会很糟糕,例如因为有一个“长时间”进程,例如阻塞调用、数据库访问、文件写入...):然后您可以在 Netty 管道中为您的 ChannelHandler 添加一个线程池(一组)来执行此类阻塞/长过程。

以下是从 ChannelPipeline 获取的 API 文档的摘录: http://netty.io/4.0/api/io/netty/channel/ChannelPipeline.html

// Tell the pipeline to run MyBusinessLogicHandler's event handler methods
// in a different thread than an I/O thread so that the I/O thread is not blocked by
// a time-consuming task.
// If your business logic is fully asynchronous or finished very quickly, you don't
// need to specify a group.
pipeline.addLast(group, "handler", new MyBusinessLogicHandler());

https://stackoverflow.com/questions/33421306/

相关文章:

java - 如何为 Selenium Grid 中的 session 提供无限空闲时间,但清理断开

python - flask 迁移 : Alembic converting choices int

c# - 运行已编译的 C# 程序 (.exe) 的要求

python - 如何在 PLY 中做一个 IF 语句?

xaml - 在 UWP 应用程序中覆盖来自 Generic.xaml 的资源

pdf - 有没有一种方法可以自动化/编写脚本(例如 perl)标记的 pdf 文件以查看它是否符合

jsp - 带有 Tomcat 的 Intellij IDEA HotSwap 适用于类,但不适用于

ios - AVSampleBufferDisplayLayer : change videoGra

python - 在 OpenGL 中的 3D 模型后面绘制背景视频

nginx - Kong 拒绝将自定义插件识别为已启用