我正在做一个小项目,用户向我的服务器发出http请求,之后我从三个不同的服务器获取并处理一些数据,然后将总结的结果返回给客户端。
当两个以上的客户端同时发出请求时,一切正常,所有客户端都无法获得响应并面临超时错误。
如何处理这件事。
提前致谢
答案 0 :(得分:2)
好的,我明白了。我建议使用es6 promises来做那种东西。 您可以使用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/