Nodejs 如何在阻塞进程的情况下处理多个并行请求

Nodejs how to handle multiple parallel requests incase of blocking process

本文关键字:处理 情况下 请求 并行 进程 Nodejs      更新时间:2023-09-26

我正在做一个小项目,其中用户向我的服务器发出http请求,然后我从三个不同的服务器获取并处理一些数据,然后将汇总结果返回给客户端。

当两个以上的客户端同时发出请求时,一切正常,所有客户端都无法获得响应并面临超时错误。

如何处理这件事.

提前致谢

好的,我明白了。我建议对这类东西使用 es6 承诺。您可以使用 request-promise 和 bluebird 向其他服务器发出 http 请求。

然后只是:

var rp = require('request-promise');
var bluebird = require('bluebird');
bluebird
.all(rp('http://www.google.com'), rp('http://example.com'))
.then(function (googleResponse, exampleResponse) {
    // Some computation
    return someResult;
})
.then(function (previousResult) {
    // Some more computation
    return someResult;
});

基本上你想要的是做计算的一部分,然后返回并允许节点接管,然后在下一步做计算的其他部分,依此类推。如果将进程拆分为几个小块,则应该能够减少阻塞。

除此之外,您还可以签出节点群集,这是一个非常简单的过程,允许您处理少数工作线程之间的服务器负载:https://www.sitepoint.com/how-to-create-a-node-js-cluster-for-speeding-up-your-apps/

相关文章: