在服务器端 Netty 处理程序中实现"group flush"



我在Netty中实现了一台运行良好的服务器,但现在我正在尝试优化一个方面。

传入通道是多路复用的,即每个客户端进程都有许多线程通过与服务器的单个连接发送请求和读取响应。

服务器处理程序 channelRead(( 依次接收每个请求,并将其调度到线程池执行。执行将导致将响应写入通道。

目前,每个响应都立即使用 ctx.writeAndFlush(( 刷新。我正在 Netty 中寻找一种可以优化的设计模式,以便如果多个线程同时将消息写入同一通道,我可以在一次刷新(即组刷新(中将多条消息批处理在一起以减少系统调用的数量。

我将不胜感激实现这种 Netty 风格的任何指示。

谢谢

安 迪。

只需使用 ctx.write(...(,一旦你写了足够多的东西,就调用 ctx.flush((。这将尝试对到目前为止编写的所有内容进行收集写入。所以只有一个系统调用。

最新更新