Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
一元夺宝系统设计
16-08-22
mistbow
各位道友好;
现在要做一个一元夺宝功能,比如一个iPhone,需要买5000分。我打算埋5000个坑(5000条纪录)。等有一个用户买了,我就把他写到其中一条记录之中。但是这样有一个问题,如果俩用户同时拿到一条记录,那么第二个人就有可能失败了。
请问各位,应该怎么设计这个系统呢?
banq
2016-08-23 07:50
这是一个高并发的设计问题。
高并发不一定要用数据库记录,而且如果访问量很高,数据库也是不行的,可以使用Akka等Actor模型。或者使用队列模型,无锁并发模型Disruptor等。或Go语言的并发模型。
两个人能够同时从数据库读取一条记录,但是写入修改时,数据库的ACID会防止并发修改,因此,只有同时一个人能写入一条记录;如果你想设计成每个人只能读取一条记录,而不会发生两个人同时拿到同一记录,可以使用队列排队方式。
一元夺宝