我在Netty中实现了一个运行良好的服务器但现在我正在尝试优化一个方面。
传入的通道是多路复用的,即每个客户端进程都有许多线程通过单个连接向服务器发送请求和读取响应。
服务器处理程序channelRead()依次接收每个请求,并将其分派给线程池以供执行。执行将导致响应被写入通道。
目前,使用ctx.writeAndFlush()立即刷新每个响应。我正在寻找Netty中的设计模式,我可以在其中进行优化,以便如果多个线程同时将消息写入同一个通道,我可以在一次刷新(即组刷新)中将多个消息一起批处理以减少系统调用次数。
我很欣赏实施这种网络风格的任何指示。
谢谢,
安迪。
答案 0 :(得分:1)
只需使用ctx.write(...),一旦你写了足够的调用ctx.flush()。这将尝试使用到目前为止所写的所有内容进行聚集写入。所以只需一个系统调用。