NodeJS性能问题-单线程

时间:2019-06-19 04:15:02

标签: node.js single-threaded

需要有关如何处理NodeJ中的操作的一些建议。我曾尝试搜索事物,但在任何地方都找不到,所以我想将其发布在这里以获取专家的反馈。

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

我仍然必须去测试并进行负载测试,以确认我们的性能如何,但是我有点担心所有关于nodejs不是多线程语言,而是show stop和bla的声明和声明。 bla bla。所以我在这里是为了就您正在做的事情是否可以接受您的建议/反馈。这就是我所拥有的:

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

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

  • 购物服务
  • MySQL和Sequelize

我将尝试以“订单处理”为例来解释我的问题。因此,当我收到确认订单的请求时,这就是我对请求进行身份验证并确认详细信息是否充分的依据。

确认请求已通过jwt令牌认证

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

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

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

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

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

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

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

按单个请求超级快。当我们深入进行负载测试时,我肯定会进行调整。...但是目前我当前的难题是我们是否选择了正确的方法。 NodeJS是否足以胜任这种执行。我预计在6到7个月内不会超过200个并发用户,因此我不必担心性能。我可以进行集群和dockering来提高性能。我想知道是否在NodeJS中做出了正确的选择。它不是CPU占用率很高的算法,只是一些“ for循环”和一些数据库请求。

应将其保留在Node中,还是应将算法代码移至以其他语言(如C ++)或python编写的另一服务中。

大时间现在很混乱。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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/