2

我正在开发一个处理相当大的有效载荷的 Http 服务器。由于Netty提供了零拷贝,所以我想到了使用Netty的零拷贝对payload进行零拷贝。但似乎 Netty 只提供transferTo(WritableByteChannel target, long position) 但不提供transferFrom()直接将内容读入文件的类似方法。

是这样还是有任何解决方法?谢谢。

4

2 回答 2

4

Netty 4.0.28+在使用原生 epoll 传输时提供拼接支持。正确设置后,调用你的处理程序就可以了。请注意,这只适用于 Linux。channel.spliceTo(fileDescriptor, 0, data.length);

于 2015-05-20T05:19:20.443 回答
2

Netty 通道不提供将入站流量零复制到文件中的操作。或者,您可以从其事件循环中注销您的 Netty 通道,将零复制到文件中,然后将其重新注册到事件循环。但是,它是一项相对昂贵的操作,因此它的收益可能会被注销/重新注册开销抵消。

于 2015-05-20T03:07:45.727 回答