我是netty的新手,我正在尝试使用 netty 4.1.11 来编写可以执行以下操作的上传服务器:
- 接受大小不超过10GB的文件的多部分POST上传请求
- 跟踪POST请求中的所有MixedAttribute
- on LastHttpContent,哈希上传的文件,执行一些业务逻辑,然后调用另一个关于上传的Web服务
- 根据来自Web服务的响应返回对客户端的响应,如果出现任何问题,则返回错误响应
醇>
我查看了官方的netty上传示例here,我试图通过添加一个新的私有变量“myUpload”来实现这一点来跟踪MixedAttribute的,当我看到LastHttpContent时,我调用了静态函数“processUpload”(它将使系统调用哈希我的文件然后调用另一个Web服务,并且可能是CPU密集型或需要一些时间),最后将函数的结果返回给客户端。
我知道这可能不太理想,因为静态功能可能会阻塞。我还看到服务器忙时上传了大量不完整的文件。我认为我需要一个管道:
- HttpRequestDecoder
- HttpResponseEncoder
- 某种MixedAttribute跟踪器
- HttpUploadServerHandler
- 某种池化执行处理程序,它接受最终的FileUpload和MixedAttributes,并调用我的函数
我真的很感激任何指向以下问题的指针:
- 有人请告诉我,我是否走在正确的轨道上?
- 是否有执行处理程序池的示例,最好与上传处理程序一起工作?
- 假设我在具有128 GB RAM的32核机器上运行此操作,工作组和执行池大小应该如何最大化吞吐量?
- 这里有用的任何其他ServerBootstrap.option配置?目前我只将SO_BACKLOG设置为128。
醇>
提前非常感谢!