稳健的上传服务,啥样的上传服务算稳健呢?
- 上传大文件内存暴涨,不能算稳健吧
- 并发量贼小,不能算稳健吧
采用流式上传
nodejs中流真是个好东西,可以平衡生产者(readStream)和消费者(writeStream)之间的矛盾,不会因为生产过快,导致仓库积累大量货物,可以认为流中实现了一个中介,当生产到了一定量,即读入内存一定数据量,中介告诉生产者,“先暂停生产吧!仓库放不下了,东西还没卖完”。当东西卖完了,中介通知生产者继续生产,这样可以保证产品堆积总量总是不超过一定量,也就程序总是不会超过一定的内存占用量。
然而流也有缺点,流占有内存少,自然效率不如一股脑儿的有多少内存用多少内存。但是这样任务就会排队阻塞,没有什么并发可言。
所以,用nodejs的流实现文件上传服务可以做到文章开头说的稳健。
实现上传
我们知道nodejs中的IO操作是异步的,流也不例外,而处理异步问题
网友评论