【营销架构day3】淘宝:怎么设计一个秒杀系统.pdf

【营销架构day3】淘宝:怎么设计一个秒杀系统.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【营销架构day3】淘宝:怎么设计一个秒杀系统 1. 一些数据 大家还记得 2013 年的小米秒杀吗?三款小米手机各 11 万台开卖,走的都是大 秒系统,3 分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计, 前端系统双 11 峰值有效请求约 60w 以上的QPS ,而后端 cache 的集群峰值近 2000w/s、单机也近 30w/s,但到真正的写时流量要小很多了,当时最高下单减 库存 tps 是红米创造,达到 1500/s。 2. 热点隔离 秒杀系统设计的第一个原则就是将这种热点数据隔离出来,不要让 1%的请求影 响到另外的 99%,隔离出来后也更方便对这 1%的请求做针对性优化。针对秒杀 我们做了多个层次的隔离: • 业务隔离。把秒杀做成一种营销活动,卖家要参加秒杀这种营销活动需 要单独报名,从技术上来说,卖家报名后对我们来说就是已知热点,当 真正开始时我们可以提前做好预热。 • 系统隔离。系统隔离更多是运行时的隔离,可以通过分组部署的方式和 另外 99%分开。秒杀还申请了单独的域名,目的也是让请求落到不同的 集群中。 • 数据隔离。秒杀所调用的数据大部分都是热数据,比如会启用单独 cache 集群或 MySQL 数据库来放热点数据,目前也是不想 0.01%的数据影 响另外 99.99%。 当然实现隔离很有多办法,如可以按照用户来区分,给不同用户分配不同 cookie,在接入层路由到不同服务接口中;还有在接入层可以对 URL 的不同 Path 来设置限流策略等 。服务层通过调用不同的服务接口;数据层可以给数据 打上特殊的标来区分。目的都是把已经识别出来的热点和普通请求区分开来。 3. 动静分离 前面介绍在系统层面上的原则是要做隔离,接下去就是要把热点数据进行动静 分离,这也是解决大流量系统的一个重要原则。如何给系统做动静分离的静态 化改造我以前写过一篇《高访问量系统的静态化架构设计》详细介绍了淘宝商 品系统的静态化设计思路,感兴趣的可以在 《程序员》杂志上找一下。我们的 大秒系统是从商品详情系统发展而来,所以本身 已经实现了动静分离,如图 1。 图 1 大秒系统动静分离 除此之外还有如下特点: • 把整个页面 Cache 在用户浏览器 • 如果强制刷新整个页面,也会请求到 CDN • 实际有效请求只是 “刷新抢宝 ”按钮 这样把 90%的静态数据缓存在用户端或者 CDN 上,当真正秒杀时用户只需要点 击特殊 的按钮 “刷新抢宝 ”即可,而不需要刷新整个页面,这样只向服务端请 求很少的有效数据,而不需要重复请求大量静态数据。秒杀的动态数据和普通 的详情页面的动态数据相 比更少,性能也比普通的详情提升 3 倍 以上。所以 “刷新抢宝 ”这种设计思路很好地解决 了不刷新页面就能请求到服务端最新的 动态数据。 4. 基于时间分片削峰 熟悉淘宝秒杀的都知道,第一版的秒杀系统本身并没有答题功能,后面才增加 了秒杀答题,当然秒杀答题一个很重要的目的是为了防止秒杀器,2011 年秒杀 非常火的时候,秒杀器也比较猖獗,而没有达到全民参与和营销的目的,所以 增加的答题来限制秒杀器 。增加答题后,下单的时间基本控制在 2s 后,秒杀器 的下单比例也下降到 5%以下。新的答题页面如图 2。 图 2 秒答题页面 其实增加答题还有一个重要的功能,就是把峰值的下单请求给拉长了,从以前 的 1s 之内延长到 2~10s 左右,请求峰值基于时间分片了,这个时间的分片对服 务端处理并发非常重要,会减轻很大压力,另外由于请求的先后,靠后的请求 自然也没有库存了,也根本到不了最后的下单步骤,所以真正的并发写就非常 有限了。其实这种设计思路目前也非常普遍,如支付宝的 “咻一咻”已及微信 的摇一摇 。 除了在前端通过答题在用户端进行流量削峰外,在服务端一般通过锁或者队列 来控制瞬间请求。 5. 数据分层校验 图 3 分层校验 对大流量系统的数据做分层校验也是最重要的设计原则,所谓分层校验就是对 大量的请求做成 “漏斗 ”式设计,如图 3 所示:在不同层次尽可能把无效的请 求过滤, “漏斗 ”的最末端才是有效的请求,要达到这个

文档评论(0)

159****5066 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档