Node.js 节点的异步行为是否会给拍卖/电子商务网站带来问题

Node.js 节点的异步行为是否会给拍卖/电子商务网站带来问题,node.js,Node.js,我一直在关注nodejs,并一直在考虑用它建立一个拍卖网站。然而,有人告诉我,由于它的异步行为,它可能不适合于,并建议使用诸如php/ruby之类的阻塞代码。i、 e.如果一个投标者1出价,而一个投标者2随后不久又出价,但节点在投标者1之前处理了投标者2,那么投标价格将失去顺序。我知道这可能被逻辑所束缚,但这里面有什么真理吗 谢谢如果你把它变成一个问题,它只会成为一个问题。因为你可以控制是否减轻这一点。话虽如此,说阻塞代码会“更好”的说法是很奇怪的——如果两个人同时发送一点,那么决定谁是第一个的

我一直在关注nodejs,并一直在考虑用它建立一个拍卖网站。然而,有人告诉我,由于它的异步行为,它可能不适合于,并建议使用诸如php/ruby之类的阻塞代码。i、 e.如果一个投标者1出价,而一个投标者2随后不久又出价,但节点在投标者1之前处理了投标者2,那么投标价格将失去顺序。我知道这可能被逻辑所束缚,但这里面有什么真理吗


谢谢

如果你把它变成一个问题,它只会成为一个问题。因为你可以控制是否减轻这一点。话虽如此,说阻塞代码会“更好”的说法是很奇怪的——如果两个人同时发送一点,那么决定谁是第一个的将取决于他们的网络速度。无论是PHP还是Ruby都不能帮你摆脱这种困境。此外,我不确定他们是否像这句话所暗示的那样完全阻塞,否则这意味着在处理出价时整个服务器将挂起。当然,这不是任何人想要的,因为你对DoS攻击非常开放。有成千上万的拍卖/电子商务网站运行异步代码,所以我不理解这个问题的动机。如果您需要保证顺序,这是可以做到的。@ggorlen另外,应该注意的是,即使JS具有异步性,它也不像是以随机顺序执行内容。如果bid2出现在bid3之前,但由于bid1当前正在处理,这两个选项都被延迟处理,那么您仍然需要执行bid1->bid2->bid3。除非您在单独的线程中运行所有投标处理,并且线程不同步。这实际上是Java等运行时的一个问题,因为它使用多线程实现异步,而JS(默认情况下)没有,延迟的代码执行仍然按顺序运行。当然,但这似乎取决于设计。例如,如果投标涉及到要求外部供应商检查价格或库存,我可以看到可能出现竞争条件的场景,当然也有相应的解决方案。某些数据库操作可能不是串行的,可能会导致排序问题。这些问题几乎可以存在于任何计算环境中。一个服务器和多个客户端争夺资源的问题主要是数据库问题和服务器代码设计问题。你不能通过选择PHP来解决这个问题。无论您选择哪种语言作为后端,您都必须在编程中意识到并发性。