必威体育Betway必威体育官网
当前位置:首页 > IT技术

秒杀活动

时间:2019-10-03 11:13:22来源:IT技术作者:seo实验室小编阅读:53次「手机版」
 

秒杀活动

秒杀活动 - 防止库存超卖


场景描述

  • 商品稀缺资源,足以吸引用户
  • 如何防止商品超卖

    • 库存只有10个,100个人买,其他90人买不到
  • 高并发、负载大
  • 数据库读多写少

实现方案

一、基于数据库实现

  • 设计思想:基于CAS乐观锁
  • 核心实现:
update t_good_stock
set good_num = good_num - #{buyNum}
where sku = #{sku} and good_num - #{buyNum} > 0 ;
  • 实现描述:

    • CAS compare and swap 直到where的两个查询条件均满足的时候才会扣减库存
    • 扣减库存失败,接口层返回false,提示用户本次秒杀不成功,等待下一个时段
  • 其他信息:

    • 不适用悲观锁的方式,获取锁,释放锁,资源的竞争方式,性能低
  • 方案缺点

    • 访问并发量大的时候,数据库mysql会出现访问瓶颈,MySQL有最大连接数,若同一个时间段的访问请求数量过大,可能会导致数据库奔溃,连接超时,影响系统其它功能
    • 只适用于小的电商网站

二、基于Redis 实现

  • memcache线程 ;Redis 多线程
  • Redis 提供原子性的增减操作,incr 与 decr 方法
  • 核心代码
// 1.pom.xml 引用 Redis 依赖

// 2.实现类中注入 JedisPool
@Autowired
private JedisPool jedisPool ;

// 3.方法中获取 Jedis 对象
Jedis jedis = jedisPool.getResource();

// 4.库存扣减
jedis.decrBy(stockNum,buyNum); 
// 扣减成功返回 >= 0L,否则扣减失败

其它保障

  • 秒杀活动页面优化

    • 商品点击添加数量后,马上设置为灰色不可见点击
    • 资源静态化

      • 所有图片、CSS等需加载资源移到OSS服务器阿里云服务——OSS对象存储服务器)上
    • cdn服务器

      • cdn服务器是什么?如何快速部署cdn服务器?
  • 代理层:大流量拦截

  • 应用层:大量使用缓存

    • 本地缓存:guava
    • 远程缓存:Memcache Redis Tair
  • 数据库:

    • 分库分表
    • 读写分离
    • 主从复制
  • 三大利器:限流、降级、缓存

  • 限流

    • Smonitor 控制流量的流向和量级
    • Smonitor 整体框架基于信号量的方式实现
    • 只需要在业务代码前后各插入一行控制代码

相关阅读

案例解析:暑期班课程招生活动,靠什么来拉新?

离暑假招生越来越近了,都说6月是招生淡季,尽管这样机构也不能松懈,招生始终是一场持久战,只有短期的胜利,但是没有长久的解放。所以抓

920全球双十一备货节入口在哪里?活动时间多久?

920备货节终于来了,还有不知道的小伙伴吗?今年920大促的主题是“全球双十一备货节”,大家可别小瞧了920备货节哦,它的销售情况可以影

盘一下今日头条“发财中国年”活动攻略,教你瓜分海量红

临近春节,年味越来越浓,每个人都满心热切地期待阖家团聚,在这一年一度的新春佳节里,除了买年货、贴春联外,怎能少得了老少皆宜、全民狂

活动运营:以拉新为目的的活动该如何做?

在上一篇文章《玩遍微信群不同阶段的拉新与留存》中对活动拉新稍做分析,很多详细的点并没有深入探讨,然而拉新又是产品能不能在短期

为什么淘宝客推广要先收钱?哪些活动很坑人?

大家对于淘宝客推广都不陌生吧,大部分的卖家都会去开通此计划,然后通过这种方式来推广店铺的商品。很多的商家觉得很纳闷,为什么淘宝

分享到:

栏目导航

推荐阅读

热门阅读