我是 Netty 新手。我想开发一个服务器,旨在接收来自可能少数(假设最多有 2 个)客户端的请求。但是每个客户端都会不断地向服务器发送许多请求。服务器必须处理此类请求并响应客户端。因此,在这里我假设即使我配置了多个工作线程,它也可能没有用,因为只有 2 个活动连接。工作线程再次阻塞,直到它处理并响应客户端。因此,请让我知道如何处理此类问题。
如果我在工作线程中使用threadpoolexecutor以多线程方式处理两个客户端请求,它会高效吗?或者如果可以通过netty框架实现,请让我知道如何做到这一点?
提前致谢...
如果我理解正确的话:您的客户端(2)将发送许多消息,每条消息都意味着服务器尽快做出答复。
可以看到2个选项:
answear 过程的时间很短(足够短,不会成为您想要达到的速率的问题,这意味着 1 个线程能够按照 1 个客户端所需的速度进行 answear):然后您可以继续使用 Netty 的标准线程(在服务器引导程序中设置 1 个工作线程(一次用于 1 个客户端)。这是最短路径。
answear进程时间不够短(速率会很可怕,比如因为有一个“长时间”的进程,比如阻塞调用、数据库访问、文件写入……):那么可以添加线程池(一组)在 Netty 管道中为您的 ChannelHandler 执行此类阻塞/长过程。
以下是从 ChannelPipeline 中摘录的 API 文档摘录:http://netty.io/4.0/api/io/netty/channel/ChannelPipeline.html 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());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)