shopping:秒杀系统

时间:2024-05-16 02:36:21
【文件属性】:

文件名称:shopping:秒杀系统

文件大小:9KB

文件格式:ZIP

更新时间:2024-05-16 02:36:21

C++

设计思路 对于秒杀的场景,由于库存一般比较有限,会出现大量的请求到达时已经售空的情况,如果每个请求都去数据库查一下库存,势必会给数据库带来很大的压力,大流量下数据库会首先扛不住。 这里是把库存提前放到redis里,每个请求到达时先判断库存是否大于0,库存小于等于0则请求直接返回已售罄。 如果此时有库存,则使用redis的INCRBY命令进行预扣库存,根据返回值判断操作是否成功: 返回值大于等于0,说明预扣成功,进行实际的数据库操作,包括下订单和减库存 (这里可以使用消息队列来处理,预扣成功后请求直接返回,由消息队列的消费者来处理后续的数据库操作); 如果返回值小于0,说明预扣失败,库存已经不足,需要把预扣的再补回去。 存储 存储主要使用redis和mysql, redis进行查库存及预扣库存,mysql进行库存和订单的持久化存储。 商品库存使用redis的字符串类型,使用INCRBY来进行


【文件预览】:
shopping-master
----client.cc(3KB)
----server.cc(9KB)
----CMakeLists.txt(6KB)
----demo.proto(1KB)
----readme.md(2KB)

网友评论