需要有关如何处理NodeJ中的操作的一些建议。我曾尝试搜索事物,但在任何地方都找不到,所以我想将其发布在这里以获取专家的反馈。
我们已经使用NextJS和NodeJS构建了一个电子商务平台。
我仍然必须去测试并进行负载测试,以确认我们的性能如何,但是我有点担心所有关于nodejs不是多线程语言,而是show stop和bla的声明和声明。 bla bla。所以我在这里是为了就您正在做的事情是否可以接受您的建议/反馈。这就是我所拥有的:
身份验证微服务:用于身份验证请求并确定用户是否有权访问特定模块
付款微服务:用于接受付款和退款。
我将尝试以“订单处理”为例来解释我的问题。因此,当我收到确认订单的请求时,这就是我对请求进行身份验证并确认详细信息是否充分的依据。
确认请求已通过jwt令牌认证
向用户auth发出请求,并确认该用户是有效用户并且可以访问订单模块。
通过数据库验证商品价格(因为我假设可以对有效载荷进行黑客攻击并且可以发送错误的价格)
验证折扣是否已从数据库正确验证
验证优惠券是否有效以及所应用的折扣是否正确
检查发送的奖励积分是否正确-发送给用户服务的请求
我们的付款网关是Razor Pay,在这里,我们确认发送的付款ID是否是有效的付款ID,并且从用户处收到的金额与要收取的总金额匹配。
所以这是我们目前在NodeJS上进行的一长串验证。
按单个请求超级快。当我们深入进行负载测试时,我肯定会进行调整。...但是目前我当前的难题是我们是否选择了正确的方法。 NodeJS是否足以胜任这种执行。我预计在6到7个月内不会超过200个并发用户,因此我不必担心性能。我可以进行集群和dockering来提高性能。我想知道是否在NodeJS中做出了正确的选择。它不是CPU占用率很高的算法,只是一些“ for循环”和一些数据库请求。
应将其保留在Node中,还是应将算法代码移至以其他语言(如C ++)或python编写的另一服务中。
大时间现在很混乱。任何帮助将不胜感激。
答案 0 :(得分:1)
Node.js可能是单线程的,但是对于您正在做的事情应该没问题。它非常适合于水平缩放/群集,并且已经有很多节点模块可以帮助您解决这一问题。
此外,Node.js是异步的,可以处理并发请求。
我还提供了一个有关如何扩展node.js的旧链接,该链接列出了每种扩展方法可以帮助支持的用户数量。简而言之,您可以使用垂直缩放,水平缩放,微服务(听起来像您已经在看)和自动化来轻松扩展您的应用程序。 Node.js应该可以正常工作。
https://adrianmejia.com/how-to-scale-a-nodejs-app-based-on-number-of-users/