我正在开发一个处理相当大的有效负载的Http服务器。由于Netty提供了零复制,所以我考虑使用Netty的零复制来使用负载的零复制。但似乎Netty只提供transferTo(WritableByteChannel target, long position)
,而不提供transferFrom()
这样的方法直接读取内容到一个文件。
这就是它的方式还是有其他解决方法?谢谢。
Netty 4.0.28+在使用本地epoll传输时提供了拼接支持。经过适当的设置,channel.spliceTo(fileDescriptor, 0, data.length);
调用在你的处理程序将做的伎俩。注意,这只适用于Linux。
Netty通道不提供将入站流量零拷贝到文件中的操作。或者,您可以将Netty通道从其事件循环中注销,对文件进行零复制,然后将其重新注册到事件循环中。然而,这是一个相对昂贵的操作,因此它的增益可能会被取消注册/重新注册的开销所抵消。