http-用node.js替换Nginx来导入大文件吗?

前端之家收集整理的这篇文章主要介绍了http-用node.js替换Nginx来导入大文件吗? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我已经找到了Event loop for large files?,但这主要是关于下载的.我从那篇文章中得出的结论是,node.js可能已经足够进行下载,但是Nginx是一个经过艰苦奋战的解决方案,“永不中断”.

但是上传呢?我们正在上传大量文件.我们进行基因组学研究,人类基因组数据集的大小高达200GB.据我所能确定的,Nginx总是在将完整的请求,标头和正文转发给后端之前,对整个请求进行缓冲.我们的内存用完了,无法同时处理三个上载.

我们的应用程序中运行着大量小型服务器,“做一件事情并做得很好”,其中一台用于处理基因组数据的上传(以及将类型转换为内部格式),另一台提供套接字. .io处理,以使客户对我们的应用程序生态中的上传进度和其他事件进行评估.其他人则处理身份验证,客户数据处理和普通在线媒体服务.

如果我正确阅读了节点的http / https模块的代码,则node.js将是处理这些问题的理想工具:它本身就是HTTP / 1.1,因此websocket传递将起作用,并且它会处理(请求,响应)在处理了HTTP HEAD之后将元组添加到处理程序函数,但保持BODY不变,直到处理程序函数绑定request.on(‘data’,…)事件以耗尽BODY缓冲区.

我们为我们的服务提供了一个细分的,基于url的名称空间:“ / import”,“ / events”,“ / users”,“ / api”,“ / media”等.Nginx仅正确处理了后三个.用node.js应用程序替换Nginx来处理所有这些操作是否困难或不合适?还是有一些晦涩的反向代理(Nginx,Pound和Varnish都有类似的限制),它们已经可以满足我的所有需求了?

最佳答案
如其他答案所述,formidable是用于处理上载的非常可靠的库.默认情况下,它缓冲到磁盘,但是如果需要,您可以覆盖该行为并处理数据.因此,如果您想编写自己的代理,那么node.js强大将是使上传内容流式传输的绝佳方法.

您也可以尝试node-http-proxy,但是不幸的是,我不确定它如何缓冲.您还应该考虑到它没有像Nginx那样被广泛使用,因此我不确定我有多信任它直接暴露在野外(库本身并不是一个大问题,但使用Node则更多.

您是否看过Nginxclient_body_buffer_size指令?似乎将其设置为较低的值可以解决您的内存问题.

原文链接:https://www.f2er.com/nginx/532383.html

猜你在找的Nginx相关文章