揭秘:2018阿里双11秒杀背后的技术

在今天双 11 这个万众狂欢的节日,对于阿里员工来说,每个环节都将面临前所未有的考验,特别是技术环节,今天我们就一起来探讨下双11天量交易额背后的技术。

一、阿里双11秒杀场景

今日凌晨零点,2018年天猫双11全球狂欢节,根据现场实时数据,双11开场2分05秒破百亿,26分03秒破500亿,1小时47分26秒破千亿。

根据公开数据,在2017年双11购物狂欢节上,开场28秒钟成交额破10亿, 3分01秒成交额破百亿,9小时04秒破千亿。交易峰值32.5万/秒,支付峰值25.6万/秒,刷新全球纪录。同时诞生的还有数据库处理峰值,4200万次/秒。

几乎毫无悬念,今年天猫双11将刷新去年1682亿的销售记录,技术的各种峰值数据也将再次打破全球记录。

然而在这样的业务场景下,背后是靠什么样的技术来支持如此庞大的秒杀场景?

二、阿里双11背后的技术

1. 云计算

利用云计算弹性能力,支撑交易峰值每秒32.5万笔、支付峰值每秒25.6万笔的混合云弹性架构。

2. 分布式消息引擎

在双11当天实现万亿级消息流转。

3. Docker技术

交易核心应用容器化撑起双11交易下单峰值,解放资源的超大规模Docker化技术。

4. 在线交易的数据实时和离线计算能力

支撑全球最大规模在线交易的数据实时和离线计算能力,包括承载阿里巴巴集团核心大数据的离线计算平台,以及双十一保证每秒处理亿条日志的计算。

5. 阿里人工智能

在搜索、推荐以及客服场景下的创新应用,包括人工智能赋能的数千家品牌商家店铺的个性化运营和粉丝会员的精准营销。

6. VR技术

虚拟购物环境背后的VR技术。

7. 前端技术

应对前端极限挑战的淘宝直播首屏秒开,以及应用世界级开源跨平台移动开发工具Weex实现双11会场几近全覆盖,实现全网首屏渲染完美践行“秒开”体验。

8. 监控技术

千万量级监控项,PB级监控数据,亿级报警通知背后的技术。

9. 物流技术

菜鸟通过包裹预测、供应链入库、订单下沉、订单路由调度、电子面单及智能分单,以及末端小件员,涉及十亿级包裹的双11之战。

总之,双11将涉及:基础设施、存储、中间件、云计算、业务架构、大数据、认知计算与人工智能、交互技术等技术领域。

由于篇幅有限无法完全详细展开,我就以其中一个大家最关心的双11秒杀场景为例,贯穿这些部分技术的应用和设计思路。

三、双11秒杀架构设计思路

秒杀系统特点是并发量极大,但实际秒杀成功的请求数量却很少,所以如果不在前端拦截很可能造成数据库读写锁冲突,甚至导致死锁,最终请求超时。

很重要的设计思路:将请求拦截在系统上游,降低下游压力。

1. 充分利用分布式缓存(tair+redis)

利用缓存可极大提高系统读写速度。

2. 充分利用消息中间件削峰

这里有相关的阿里消息中间件(Notify和MetaQ),以及开源的(ActiveMQ、Kafka等)。

消息队列可以削峰,将拦截大量并发请求,这也是一个异步处理过程,后台业务根据自己的处理能力,从消息队列中主动的拉取请求消息进行业务处理。

3. 前端设计优化

  • 页面静态化:将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素,通过CDN来抗峰值。
  • 禁止重复提交:用户提交之后按钮置灰,禁止重复提交,防止一秒钟内多次写入数据库。
  • 用户限流:在某一时间段内只允许用户提交一次请求,比如可以采取IP限流

4. 后端设计优化

  • 服务端控制器层(网关层)
  • 限制uid(UserID)访问频率:我们上面拦截了浏览器访问的请求,但针对某些恶意攻击或其它插件,在服务端控制层需要针对同一个访问uid,限制访问频率。
  • 服务层:上面只拦截了一部分访问请求,当秒杀的用户量很大时,即使每个用户只有一个请求,到服务层的请求数量还是很大。比如我们有100W用户同时抢100台手机,服务层并发请求压力至少为100W。
  • 采用消息队列缓存请求:既然服务层知道库存只有100台手机,那完全没有必要把100W个请求都传递到数据库啊,那么可以先把这些请求都写到消息队列缓存一下,数据库层订阅消息减库存,减库存成功的请求返回秒杀成功,失败的返回秒杀结束。
  • 利用缓存应对读请求:比如双11秒杀抢购,是典型的读多写少业务,大部分请求是查询请求,所以可以利用缓存分担数据库压力。
  • 利用缓存应对写请求:缓存也是可以应对写请求的,比如我们就可以把数据库中的库存数据转移到Redis缓存中,所有减库存操作都在Redis中进行,然后再通过后台进程把Redis中的用户秒杀请求同步到数据库中。

5. 数据库层

数据库层是最脆弱的一层,一般在应用设计时在上游就需要把请求拦截掉,数据库层只承担“能力范围内”的访问请求。所以,上面通过在服务层引入队列和缓存,让最底层的数据库高枕无忧。

淘宝在09年的时候就已经提前把数据库按照业务进行垂直拆分,再结合业务需要进行水平拆分。现在对数据库的拆分,都是利用数据库层中间件(淘宝 tddl),来进行无缝对数据库的侵入设计。

除此以外还会涉及到分布式小文件存储以及搜索引擎,以及服务器集群监控等技术。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

小程序入口移到微信主页面,你玩了小游戏没有?

昨天下午3点多,微信公众平台又发出炸裂消息:小程序功能升级,6.6.1版本微信在主界面新增了小程序任务栏的功能。小程序菜单进行了升级,并提供小程序间快速切换的功...

3087
来自专栏开源项目

GVP 特辑!PHP 老司机力荐的 6 款实战项目 | 码云周刊第 40 期

GVP 特辑 有数据显示,全球前100万的站点中,有超过70%的站点是使用 PHP 开发的。面对如此流行的编程语言,我们如何才能更有效率的学习?今天小编特意...

4765
来自专栏杨建荣的学习笔记

swingbench压测Oracle小记(r12笔记第20天)

今天抽时间在整理一个关于MySQL和Oracle共同面临的问题,但是它们有着不同的解决方案,就是经典的partial write问题,我也看到网上有很多D...

3697
来自专栏张善友的专栏

国内2大Git代码托管网站

可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识。GitHub不但是一个代码托管网站,更是一个程序员的SNS社区。GitHub真正迷人的是它的创新...

2708
来自专栏云计算D1net

云存储管理的9个免费工具

云计算的概念还不算太旧,却已很好地适应于世界各地。现在许多基于云的可用服务,已经开始大规模地流行起来。不少商人和企业家正在使用这些基于云的服务,因为即便他们不在...

5936
来自专栏美团技术团队

大众点评支付渠道网关系统的实践之路

业务的快速增长,要求系统在快速迭代的同时,保持很好的扩展性和可用性。其中,交易系统除了满足上述要求之外,还必须保持数据的强一致性。对系统开发人员而言,这既是机遇...

38810
来自专栏FreeBuf

蓝光光盘攻击:利用蓝光光盘植入恶意木马

近日,英国安全研究人员Stephen Tomkinson发现两个基于蓝光光盘的攻击方法,通过将恶意文件存植入到蓝光光盘中,在光驱转动时读取光盘中的恶意代码发起感...

1976
来自专栏TEG云端专业号的专栏

「科技·TEG」拓路前行-TDSQL追求极致体验的这一路

2007年,计费平台的一帮年轻人为了实现银行级的高可用、零错账的交易系统,加班加点讨论方案,长达几个月的反复头脑风暴与论证,终于提出了“TBOSS 7*24”容...

4297
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–报价处理(232)-1业务概览

用途 此业务情景介绍标准按订单设计 (ETO) 环境中的报价处理。 SAP 销售与分销 (SD) 和项目系统 (PS) 的功能用于控制整个流程,从客户查...

3879
来自专栏chenssy

Java必看 | 阿里巴巴总结:Java常见疑惑和陷阱

本文是淘宝 @逾轮 总结的Java常见的疑惑和陷阱。对于文中列举的例子,希望大家都能好好跑一下看看实际结果,然后思考一下为什么是这个结果。相信通过实践,大家能够...

1614

扫码关注云+社区