如何通过Node.js的多进程机制优化长尾任务执行效率?
- 内容介绍
- 文章标签
- 相关推荐
本文共计979个文字,预计阅读时间需要4分钟。
最近有个学员工写了个Node.js脚本程序,定时从某服务器下载文件,然后上传到另一个云服务商。但每次只能先下载一个文件,再上传一个文件,效率比较低。他向我求助。
最近我有个学员写了个 Node.js 脚本程序,定时从某个服务器下载文件,并向另一个云服务商上传文件。
但是每次只能先下载一个文件,再去上传一个文件。效率比较低。于是他向我请教,怎么样才能提高效率?我告诉他应该用 Node 的多进程技术。
什么是 Node 多进程?
Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。
使用多进程进行初步代码优化
简单看了一下学员的代码,大概是这样:
const dl = require('./download.js') const ul = require('./upload.js') const source = require('./source.js') async function runTask() { const { originUrl, targetUrl } = source.getNext() const { data } = await dl(originUrl) await ul(targetUrl, data) runTask() } runTask()
这个代码逻辑上是没问题的,但是它只能在 1 个 CPU 核心中运行。
我们完全可以使用 Node.js 的多进程来利用 CPU 的多核心来增加这个程序的吞吐量。
怎么改造呢?
也非常简单。
本文共计979个文字,预计阅读时间需要4分钟。
最近有个学员工写了个Node.js脚本程序,定时从某服务器下载文件,然后上传到另一个云服务商。但每次只能先下载一个文件,再上传一个文件,效率比较低。他向我求助。
最近我有个学员写了个 Node.js 脚本程序,定时从某个服务器下载文件,并向另一个云服务商上传文件。
但是每次只能先下载一个文件,再去上传一个文件。效率比较低。于是他向我请教,怎么样才能提高效率?我告诉他应该用 Node 的多进程技术。
什么是 Node 多进程?
Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。
使用多进程进行初步代码优化
简单看了一下学员的代码,大概是这样:
const dl = require('./download.js') const ul = require('./upload.js') const source = require('./source.js') async function runTask() { const { originUrl, targetUrl } = source.getNext() const { data } = await dl(originUrl) await ul(targetUrl, data) runTask() } runTask()
这个代码逻辑上是没问题的,但是它只能在 1 个 CPU 核心中运行。
我们完全可以使用 Node.js 的多进程来利用 CPU 的多核心来增加这个程序的吞吐量。
怎么改造呢?
也非常简单。

