记录一次简单的秒杀场景

简介: 记录一次简单的秒杀场景

背景 商品秒杀

  • 条件: 限定用户在活动期间只能参加一次, 不能超卖
  • 环境: springBoot

处理方法

service方法上加了事务和锁

加锁是因为,并发下多个线程同时进行操作有可能导致超卖

service

public void doKill(){
    if(! condition) {
      return;
    }
    try{
      Lock.lock(); // 这个锁可能是个全局的锁
      if(! condition) {
        return;
      }
      doSomeThing(); // thows BusinessException
    }finally {
      Lock.unock();
    }
}
@Transectional
public void doSomeThing(){
}

注意:

假如在事务的service调用另外一个事务方法, 那么事务是不会生效的

可以在serviceImpl 里面再注入自己

注意假如doKill方法上加事务,可能会出现问题, 因为锁释放了事务还没提交

所以一定要保证事务结束后才释放锁

目录
打赏
0
0
0
0
0
分享
相关文章
|
9月前
|
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
175 0
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
507 0
商品秒杀情况下使用商品id做Redis缓存
商品秒杀情况下使用商品id做Redis缓存
96 0
.商品秒杀-超卖
.商品秒杀-超卖问题
123 0
redis缓存一致性问题 & 秒杀场景下的实战分析
本篇文章讲述了在高并发场景下 redis缓存一致性问题 & 秒杀场景下的实战分析, 数据库缓存不一致解决方案, 缓存与数据库双写一致以及秒杀场景下缓存一致性问题的实战解决方案
662 0
秒杀系统
秒杀能够以极小的经费撬动巨大的流量,虽然会带来一定的口碑损失,但因为极具性价比,所以经常被运营同学使用。本文介绍如何设计一款能够支撑60W QPS的秒杀系统,希望能够帮助到大家。
Redis 如何实现库存扣减操作?如何防止商品被超卖?
基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService)。
973 0
Redis 如何实现库存扣减操作?如何防止商品被超卖?
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
595 0
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等