我是 netty 的新手。我想开发一个服务器,旨在接收来自可能很少(比如 Max 是 2 个)客户端的请求。但是每个客户端都会不断地向服务器发送许多请求。服务器必须处理此类请求并响应客户端。所以,在这里我假设即使我配置了多个工作线程,它也可能没有用,因为只有 2 个事件连接。工作线程再次阻塞,直到它处理并响应客户端。所以,请让我知道如何处理这些类型的问题。 如果我在工作线程中使用 threadpoolexecutor 以多线程方式处理两个客户端请求,它是否有效?或者如果它是通过 netty 框架实现的,请告诉我该怎么做? 提前致谢...
最佳答案
如果我理解正确:您的客户 (2) 将发送许多消息,每条消息都暗示服务器会尽快做出答复。
可以看到2个选项:
回答过程的时间很短(短到不会成为您想要达到的速率的问题,这意味着 1 个线程能够像您需要的那样快速回答 1 个客户):那么您可以继续使用在服务器 Bootstrap 中设置来自 Netty 的标准线程(一次用于 1 个客户端的 1 个工作线程)。这是最短路径。
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
xaml - 在 UWP 应用程序中覆盖来自 Generic.xaml 的资源
pdf - 有没有一种方法可以自动化/编写脚本(例如 perl)标记的 pdf 文件以查看它是否符合
jsp - 带有 Tomcat 的 Intellij IDEA HotSwap 适用于类,但不适用于
ios - AVSampleBufferDisplayLayer : change videoGra