繁体   English   中英

Node.js:处理来自节点的传出HTTP请求

[英]Node.js: Handling outgoing HTTP request from node

我已经为这个问题努力了一段时间,但是没有找到一个好的解决方案,因此来这里寻求帮助。

我有一个node.js服务器; 在收到来自客户端的请求后,服务器将联系第三方后端以获取一些数据,并将其返回给客户端。

服务器到第三方的后端通信涉及多次来回呼叫,通常需要3秒钟才能完成此过程。

例如,如果我从测试工具(如JMeter)发出50个并发请求,则性能下降将变得非常严重,甚至会导致某些稍后服务的调用超时。

最初,我开始研究asyncblock,但是由于它在光纤上运行,因此性能并未得到很大改善,因此我开始研究线程。

我可以找到的唯一成熟的模块是“ gogo-a-gogo”,但最近我还发现,您不能在TAGG产生的线程中使用所需的外部模块(例如,加密)。

鉴于存在使用node.js构建的代理产品,我相信有一种有效的方法可以做到这一点,但是如果线程不能使用外部模块,我真的想不出其他方法。

任何意见,将不胜感激。

由于NDA,我无法透露全部细节,但这是我正在做的基本概念。 我想将以下逻辑发送到单独的线程。

asyncblock(flow){
    var result1 = flow.sync(externalRequest1(flow.callback());
    if result1 contains success message
         var result2 = flow.sync(externalRequest2(flow.callback());
         if result2 contains success message
             process result2 and return to client
}

首先要确定的一点是:您是否正在使用node.js核心HTTP代理? 如果是这样,您将受到与同一服务器的5个连接的maxSockets限制。 有关详细信息,请阅读hyperquest自述文件

其次,请注意远程端也可能会施加滥用限制,因此请检查是否存在问题,或者例如,如果您使用10个连接的单个池而不是打开无限数量的同时连接,则整体性能是否会更好与上游服务器的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM