一元夺宝系统设计

16-08-22 mistbow
    

各位道友好;

现在要做一个一元夺宝功能,比如一个iPhone,需要买5000分。我打算埋5000个坑(5000条纪录)。等有一个用户买了,我就把他写到其中一条记录之中。但是这样有一个问题,如果俩用户同时拿到一条记录,那么第二个人就有可能失败了。

请问各位,应该怎么设计这个系统呢?

    

banq
2016-08-23 07:50

这是一个高并发的设计问题。

高并发不一定要用数据库记录,而且如果访问量很高,数据库也是不行的,可以使用Akka等Actor模型。或者使用队列模型,无锁并发模型Disruptor等。或Go语言的并发模型。

两个人能够同时从数据库读取一条记录,但是写入修改时,数据库的ACID会防止并发修改,因此,只有同时一个人能写入一条记录;如果你想设计成每个人只能读取一条记录,而不会发生两个人同时拿到同一记录,可以使用队列排队方式。