NodeJS 性能问题 - 单线程

NodeJS Performance question - Single Threaded

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

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

我仍然需要进行测试并进行负载测试以确认我们的性能如何,但我有点担心所有关于 nodejs 不是多线程语言并且它是一个表演障碍的陈述和声明和 bla bla bla。所以我来这里是为了让您 suggestion/feedback 了解我们正在做的事情是否合适。这是我的:

我将尝试用 "order processing" 的例子来解释我的问题。因此,当我收到确认订单的请求时,这就是我对请求进行身份验证并确认详细信息是否充分证明的方法。

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

请求用户授权并确认用户是有效用户并且可以访问订单模块。

通过数据库验证商品价格(因为我假设有效载荷可以被黑客攻击并且可以发送错误的价格)

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

验证优惠券是否有效以及应用的折扣是否正确

检查发送的奖励积分是否正确-发送用户服务请求

我们的支付网关是 Razor Pay,在这里,我们确认发送的支付 ID 是否是有效的支付 ID,以及从用户收到的金额是否与要收取的总金额相符。

这是我们现在在 NodeJS 进行的一长串验证。

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

我应该将其保留在 Node 中,还是应该将此算法代码移动到另一个用不同语言(如 C++)编写的服务中,或者 python。

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

Node.js 可能是 single-threaded,但你所做的应该没问题。它非常适合水平 scaling/clustering 并且已经有很多节点模块可以帮助您解决这个问题。

https://medium.com/iquii/good-practices-for-high-performance-and-scalable-node-js-applications-part-1-3-bb06b6204197

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

我还包括了一个较早的 link 如何扩展 node.js,其中列出了每种扩展方法可以帮助支持的用户数量。长话短说,您可以使用垂直扩展、水平扩展、微服务(听起来您已经在看)和自动化来轻松扩展您的应用程序。 Node.js 应该可以正常工作。

https://adrianmejia.com/how-to-scale-a-nodejs-app-based-on-number-of-users/