留言与评论(共有 0 条评论) |
发布时间:2020-04-15 16:39:58
场景:秒杀活动,天猫双11,12306购票等。
库存同步或下单同步,指同一时间内用户在抢购同一个商品时,库存不要超额扣除。
首先是大数据量且高并发环境,下单时必须保证数据一致性,一般不直接操作数据库进行下单 ,而是通过如下手段对请求进行限流等。
1)利用redis的单线程原子操作性质,完成商品数量的扣除。
2)扣除成功后,可以使用消息队列发送请求到下一个模块,例如扣除商品或扣款等。
3)在操作数据库进行商品数量扣除时,可以使用乐观锁对商品数量进行校验。
库存加载到缓存,如redis,基于redis的原子操作扣减库存,以及库存验证。
下单成功后,发送下单成功mq,库存系统消费mq扣减库存。当然,消费方要保证幂等。
库存系统数据库操作使用乐观锁。
这个需要在数据库端建立集群,并进行读写分库。
并发条件下,为了确保系统稳定同步,需要做redis缓存,以及使用rocketmq消息中间件异步处理,如果需要做大屏事实数量同步使用kafka解偶,从而可最大限度提高系统并发。
1、页面库存不是实时刷新的,每次打开页面才刷新
2、库存查询和下单分别是读写操作,读写操作都要锁,要原子操作。
数据库的锁肯定能保证库存,但是并发量不会太高,高并发可以用消息队列加缓存。
留言与评论(共有 0 条评论) |
全站搜索