繁体   English   中英

NodeJS 性能问题 - 单线程

[英]NodeJS Performance question - Single Threaded

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

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

我仍然需要进行测试并进行负载测试以确认我们如何执行,但我有点担心关于 nodejs 不是多线程语言的所有声明和声明,它是一个显示塞子和 bla bla bla。 所以我来这里是为了获得您对我们正在做的事情是否还可以的建议/反馈。 这就是我所拥有的:

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

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

  • 代购服务
  • MySQL 和 Sequelize

我将尝试用“订单处理”的例子来解释我的问题。 因此,当我收到确认订单的请求时,这就是我正在做的验证请求并确认详细信息是否完整的证据。

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

向 user auth 发出请求并确认用户是有效用户并有权访问 order 模块。

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

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

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

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

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

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

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

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

现在很迷茫。 任何帮助将不胜感激。

Node.js 可能是单线程的,但它应该适合你正在做的事情。 它非常适合水平扩展/集群,并且已经有很多节点模块可以帮助您解决这个问题。

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

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

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

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

暂无
暂无

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

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