5

你设计的秒杀系统,能通过 “双十一” 大考吗?

 2 years ago
source link: https://segmentfault.com/a/1190000040849064
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

10月20日一年一度的双十一拉开帷幕,当日下午两点半,李佳琦准时开播,连续直播时长共计12个小时26分,共上架439件商品,直播间累计交易额高达115亿元,预估销量达3771万。这个交易额近乎数百个小规模公司年营收,可以看到近年来直播电商异常火爆,小到种草博主大到流量明星,从李佳琦、薇娅到罗永浩,众多一夜暴富的都市传说指引海量玩家涌入,能想象到的所有变现量级高与不高的流量都一拥而上。

而作为电商商业的技术从业者,高的销量意味着高的保障,对后台工程师的能力也有着更高的要求。数百万用户冲进直播间,抢购商品,流量激增,如何保证系统高可用?秒杀系统究竟应该如何设计?所面临的核心挑战又有哪些?

技术难点

秒杀系统具有:限时、限量,定时定点,手动上架,瞬时流量洪峰,持续时间短等业务特点,其技术特点有:瞬时并发流量高,读多写少,流程简单,基于上述特点,秒杀系统在设计时一般需要遵循以下原则:

  1. 限流,将请求尽量拦截在上游
  2. 充分利用缓存

当然除却应遵循的原则外,秒杀系统在设计时以下问题也不得不考虑:

1、超卖

当付款的订单量大于当前商品库存量时,就会存在超卖问题,例如商品库存只有300个,但秒杀售卖时,卖出350个,而超卖问题首先会导致商家无货可发,容易引起商家和用户的投诉,并且有可能产生赔付,如果是优惠券类商品超卖,将直接产生资产损耗,故设计秒杀系统时超卖问题是首要解决对象。

2、高并发

基于上述秒杀系统的特点:时间短、瞬时流量洪峰,秒杀往往仅持续几分钟,在高并发场景下,用户的请求可以简单概括为:获取缓存—查询数据—重建缓存—返回结果,如果命中缓存直接返回结果,但短时间内大量的请求并发进来,很有可能会造成缓存击穿或者失效,如何解决这些问题也是不得不考虑的。

解决方案

以平常的交易平台架构设计为例,我们需要关注交易服务、场景、基础能力的搭建。我们将秒杀架构进行划分,大体分为四层分别是:用户层、负载均衡层、应用层和持久层

图片

超卖解决方案

解决超卖问题的基本思路是:

  1. 直接依赖DB事务机制,做强一致和超卖校验;
  2. 保证足够的性能;(保证DB的服务能力尽量提供给写场景)
  3. 合理处理异常;
  4. 实时处理超卖;超时关单+增加扣库存超时时间;实时监控+实时干预
  5. 尽量不要使用异步扣库存

解决方案:同步,下单减库存,代码缩影:

UPDATE t_seckill_goods SET count = count -1, version = version +1 WHERE id = ? AND count > 0 AND version = ?

回滚库存:

UPDATE t_seckill_goods SET count  = count +1, version = version +1 WHERE id = ? version = ?

图片

当然解决上述问题不仅是下单减库存这一同步方法,异步也可实现。回归到秒杀系统自身,技术层仅解决了功能性的问题,而对于直播间秒杀来讲,其本质依旧在于营销,而营销的本质在于吸引不是强迫~

叮咚!福利时间

上述秒杀系统解决方法仅是腾讯课堂海量优质IT互联网课程中的冰山一角,还有涵盖编程语言、前端开发、软件研发(测试)、认证考试、云计算大数据、网络与运维、游戏开发、硬件研发等领域的更多优质课程和内容。除此之外,1024程序员节,腾讯课堂也推出了专属的活动哦,可谓仪式感拉满!

作为广大程序员的节日,1024早已不是个日历表上单纯的一天,它承载了程序员独特的惆怅和浪漫。徜徉在0和1的世界里,这份浪漫却被每一个忙碌的日子所掩盖,但即使是这样,在1024这个特殊的日子里,我们该有所不同,不是嘛?

别人的520情人节里有玫瑰花?但在程序员的世界里(16进制里522等于十进制的1314),会在522的时候,送上1314个祝福。

别人过春节贴对联?但在程序员的世界里,他们会用一段代码把“Hello World”作为寄语写给新的一年的自己...

所以,#1024程序员节#,腾讯课堂又会带来什么,将这个专属节日仪式感拉满呢?

摇霸符加BUFF,收获自己节日的祝福和愿景!

【活动奖品】

1、五符集卡:集齐五款霸符(「消灭BUG鸭」符、「提效摸鱼」符、「永不宕鸡」符、「成为大牛」符、「找到对象」符)的小伙伴,可获得限量版霸符T恤一件,数量有限,先到先得。

图片

图片

2、彩蛋奖:随机摇到彩蛋金霸符的幸运观众,将获得腾讯课堂首次发行的霸符数字藏品,每款霸符数字藏品限量发行500份,共2500份。

图片

【规则说明】

1、用户登录H5,摇一摇互动,摇出不同霸符,集齐五款即可兑换基础奖品;摇出金霸符即可获得NFT数字藏品。

2、每位用户拥有5次“摇霸符”机会,次数用尽后,可通过参与趣味问答解锁额外机会,最多可摇50次。

3、用户进入社区站内,锁定活动链接,定时霸符雨,点击赢好礼(好礼包括现金红包、课程优惠、NFT霸符,3C尖货、数码实物奖品、专业知识,现金红包、定制T恤等)

图片

还等什么?现在就来参与,更多惊喜等你解锁哦!

图片

扫描二维码

Get你的1024专属「霸符」吧~

点击【此处】Get你的1024专属「霸符」


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK