问题描述:
举个例子,比如买票,数据库中只有一张票了,现在两个人同时购买这张票,请问nodejs是如何处理的?有人说,nodejs是单线程,不会产生此问题。那如果是利用多核多线程呢?或N台服务器,m个线程同时请求这个资源呢?感谢!
问题描述:
举个例子,比如买票,数据库中只有一张票了,现在两个人同时购买这张票,请问nodejs是如何处理的?有人说,nodejs是单线程,不会产生此问题。那如果是利用多核多线程呢?或N台服务器,m个线程同时请求这个资源呢?感谢!
10 回答8.3k 阅读
7 回答2.2k 阅读✓ 已解决
5 回答1.9k 阅读✓ 已解决
3 回答5k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
这个问题有可能会在买每一张票的时候发生,而不仅是最后一张票。另外,Node.js 是单线程处理,所以单机服务不会发生类似的问题,就算是多核也不会发生。不过如果有N台服务器在跑使用同一个数据库中的数据,这是多个进程在竞争资源。
如果想简单的解决此类问题,给表加锁。如果希望高效一点处理此类问题,需要加一些缓存,如果是高并发的情况,需要在缓存层做一些初步的筛选。