我正在编写一个 Node.js 应用程序 - 长话短说 - 根据用户在网站上的活动/位置确定不同 IO 进程的优先级。到目前为止,一切都运行良好 - 重要的排队项目首先运行,而不太重要的项目稍后运行。
棘手的部分是一次有很多事情发生——用户登录,用户转到不同的页面,用户做一些需要立即处理的事情,等等。在大多数情况下,我并不担心 Node.js 如何管理事件队列,但在某些情况下我是。我正在想象这样一种情况,我的事件队列中有一大堆东西(可能是因为一堆 IO 批处理刚刚返回,正在等待处理),并且用户在我的网站上执行了需要的操作立即 IO 请求,然后在该请求返回时立即处理。
我从未编写过需要我真正担心缩放的 Node.js 应用程序,因此我对它以正确顺序处理我的事件的能力不是 100% 有信心。担心这是一件愚蠢的事情吗?Node.js 处理事情的速度会如此之快,以至于我永远不会真正注意到阻塞,还是很有可能随着我的扩展,我会开始看到正在处理的重要事情出现严重延迟?
如果这是一个合理的担忧,Node.js 中是否有任何接口可以手动确定事件队列的优先级?
更新:
@Ricardo Tomasi 在评论中提出了一个很好的观点,如果我的应用程序真的是 CPU 密集型的,它可能不属于 Node.js。这让我意识到我的应用程序确实不是 CPU 密集型的,并且可能会运行良好。
为了进一步向自己证明这一点,我做了一个小基准测试:
var a = new Date().getTime() + 1000;
var b = new Date().getTime();
var c = 0;
while(b < a) {
c++;
b = new Date().getTime();
}
console.log(c + " loops in 1 second.");
我只有不到 200,000 个循环,这足以向我证明我没有什么可担心的。但是,我仍然想知道是否有任何方法可以手动管理 Node.js 事件队列。有人知道吗?