加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2021-01-12 08:28:34 所属栏目:Nginx 来源:互联网
导读:我已经找到了Event loop for large files?,但这主要是关于下载的.我从那篇文章中得出的结论是,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则更多.

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

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读