Node.js NodeJS性能问题-单线程

Node.js NodeJS性能问题-单线程,node.js,single-threaded,Node.js,Single Threaded,需要一些关于如何在NodeJs中处理操作的建议。我尝试过搜索东西,但在任何地方都找不到,所以我想我会把它贴在这里以获得专家的反馈 我们使用NextJS和NodeJS构建了一个电子商务平台 我仍然需要进行测试和负载测试,确认我们如何执行,但我有点担心所有关于nodejs如何不是多线程语言的声明和声明,它是一个show stopper和bla bla bla bla。因此,我在这里听取您的建议/反馈,了解我们正在做的事情是否可行。这就是我所拥有的: 身份验证微服务:用于验证请求并查找用户是否有权访

需要一些关于如何在NodeJs中处理操作的建议。我尝试过搜索东西,但在任何地方都找不到,所以我想我会把它贴在这里以获得专家的反馈

我们使用NextJS和NodeJS构建了一个电子商务平台

我仍然需要进行测试和负载测试,确认我们如何执行,但我有点担心所有关于nodejs如何不是多线程语言的声明和声明,它是一个show stopper和bla bla bla bla。因此,我在这里听取您的建议/反馈,了解我们正在做的事情是否可行。这就是我所拥有的:

  • 身份验证微服务:用于验证请求并查找用户是否有权访问特定模块

  • 付款微服务:用于接受付款和退款

  • 购物服务
  • MySQL和Sequelize
我将尝试用一个“订单处理”的例子来解释我的问题。因此,当我收到一个确认订单的请求时,我就是这样做的,以验证该请求,并确认细节是否充分证明

确认请求通过jwt令牌进行了身份验证

向用户auth发出请求,并确认该用户是有效用户并且有权访问订单模块

通过数据库验证物品的价格(因为我假设一个有效负载可能被黑客攻击,并且可能发送错误的价格)

验证是否从数据库正确验证折扣

验证优惠券是否有效,所申请的折扣是否正确

检查发送的奖励点数是否正确-向用户服务发送请求

我们的支付网关是Razor Pay,在这里,我们确认发送的支付id是否是有效的支付id,并且从用户处收到的金额与要收费的总金额匹配

这是我们目前在NodeJS进行的一长串验证

只需一次请求,速度就非常快。当我们深入进行负载测试时,我肯定会调整一些事情。。。。但我目前的困境是我们是否选择了正确的方法。NodeJS是否足以执行这种执行。我预计在接下来的6-7个月内,并发用户不会超过200个,所以我不会太担心性能。我可以通过集群和停靠来提高性能。我想知道我是否在NodeJS中做了正确的选择。它不是一个cpu密集度很高的算法,只是一些“for循环”和一些数据库请求

我应该将这个保持在节点中,还是应该将算法的代码移到另一个服务中,如C++语言,或者Python。p>


我现在很困惑。任何帮助都将不胜感激。

Node.js可能是单线程的,但您所做的一切都应该很好。它非常适合于水平扩展/集群,并且已经有很多节点模块可以帮助您实现这一点

此外,Node.js是异步的,可以处理并发请求

我还提供了一个关于如何缩放node.js的老链接,其中列出了每个缩放方法可以帮助支持的用户数量。长话短说,您可以使用垂直缩放、水平缩放、微服务(听起来您已经看到了)和自动化来轻松地扩展应用程序。Node.js应该可以正常工作


节点是单线程但异步的,可以处理许多并发请求,您应该可以,如果您实现了集群,它会更快。非常好@mjrcodin,谢谢您的帮助。感谢你;)我将很快发布我的测试结果和基准测试,这样它也可以帮助其他人。