[英]NodeJS Performance question - Single Threaded
需要一些关于如何处理 NodeJs 操作的建议。 我试图搜索,但在任何地方都找不到,所以我想我会在这里发布它以获得专家的反馈。
我们已经使用 NextJS 和 NodeJS 构建了一个电子商务平台。
我仍然需要进行测试并进行负载测试以确认我们如何执行,但我有点担心关于 nodejs 不是多线程语言的所有声明和声明,它是一个显示塞子和 bla bla bla。 所以我来这里是为了获得您对我们正在做的事情是否还可以的建议/反馈。 这就是我所拥有的:
身份验证微服务:用于对请求进行身份验证并查找用户是否有权访问特定模块
支付微服务:用于接受付款和退款。
我将尝试用“订单处理”的例子来解释我的问题。 因此,当我收到确认订单的请求时,这就是我正在做的验证请求并确认详细信息是否完整的证据。
确认请求通过 jwt 令牌进行身份验证
向 user auth 发出请求并确认用户是有效用户并有权访问 order 模块。
通过数据库验证物品的价格(因为我假设有效载荷可以被黑客入侵并且可以发送错误的价格)
验证是否从数据库中正确验证了折扣
验证优惠券是否有效以及应用的折扣是否正确
检查发送的奖励积分是否正确 - 向用户服务发送请求
我们的支付网关是 Razor Pay,在这里,我们确认发送的支付 id 是否是有效的支付 id,并且从用户那里收到的金额与要收取的总金额相匹配。
所以这是我们现在在 NodeJS 上进行的一长串验证。
单个请求速度超快。 当我们深入进行负载测试时,我肯定会调整一些东西......但我目前的困境是我们是否选择了正确的方法。 NodeJS 是否足以执行这种执行。 我预计在 6-7 个月内不会有超过 200 多个并发用户,所以我不太担心性能。 我可以通过集群和泊坞来提高性能。 我想知道在 NodeJS 中我是否做出了正确的选择。 它不是一个非常高的 CPU 密集型算法,只是一些“for 循环”和一些数据库请求。
我应该将它保留在 Node 中,还是应该将这段算法代码移动到用不同语言(如 C++)编写的另一个服务中,或者可能是 python。
现在很迷茫。 任何帮助将不胜感激。
Node.js 可能是单线程的,但它应该适合你正在做的事情。 它非常适合水平扩展/集群,并且已经有很多节点模块可以帮助您解决这个问题。
此外,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.