阿里双十一购物节背后的技术问题

一年一度的双十一购物狂欢节又要来临了,你准备好剁手了吗?我每年都要购买好几百,有时候甚至是一千多的东西。不过以前我还没有考虑过这背后的技术问题,直到最近我做了一个烂项目以及和同事谈论双十一购物效率问题时才思考了一下这个问题。

一台普通的阿里云服务器,用tomcat和nginx部署的web项目,数据库使用mysql。当数据库的数据达到几百万条时,只需要几个人同时访问页面,就会出现非常卡顿的现象,数据加载不出来,网页刷新超慢。为什么这种情况会出现呢?因为这是个烂项目,没有考虑各种高并发,海量数据,索引等技术问题。

那么,双十一那天会发生什么事情呢?2017年双十一天猫成交额1682亿,那么1682背后包含多少海量的数据,高并发查询,PV,UV等。双十一背后面临的技术问题大致分为以下几点:

双十一这几天淘宝天猫会同时有千万级的访问量,服务器是如何承载的。如我上面所说,做了个小网站,几十个人同时访问就卡顿甚至崩溃,但是双十一淘宝购物却很流畅,偶尔会有下单很卡的情况,但是基本上是不影响使用的。现在很多公司都会开发分布式集群系统,在阿里自然也是这样。这样的好处是某一台服务器挂掉了,依然不影响使用,在客户能够正常使用的情况下,我们立即去修复宕机的服务器。

另一个显著的问题就是同一时间海量的数据存储,这也是一大技术难题。阿里在Mysql的基础之上,自行研发了一套SliSql,性能比Mysql提升70%。AliSQL版本在强度和广度上都经历了极大的考验。最新的AliSQL版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL等社区汲取精华,也沉淀了阿里巴巴多年在MySQL领域的经验和解决方案。AliSQL增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。

还有一个重大的技术挑战就是双十一的零点秒杀活动,这也是双十一最核心的业务。几乎所有的等待双十一购物的同胞们,在秒杀活动开始的一瞬间,点下购买按钮抢购商品。显而易见,秒杀活动不能使用正常的网站业务流程,也不能和正常的交易业务共用服务器,必须设计专门的秒杀系统,来应对秒杀活动。秒杀活动需要面对的技术挑战有以下几点:

  1. 对现有网站业务造成的冲击,稍有不慎将导致整个网站瘫痪
  2. 高并发的应用,数据库负载压力大。用户会频繁的刷新页面,访问服务器,访问数据库,会对服务器和数据库产生非常大的压力。
  3. 秒杀活动激增的网络请求和服务器带宽,远超平时的带宽。

秒杀活动有这么多技术难点,那么阿里的大神是怎么应对这些挑战的呢?毕竟一个不慎,双十一的活动就是一地鸡毛了。在此,小编整理了几个应对策略:

  1. 秒杀系统独立部署。为了避免秒杀活动搞垮整个淘宝网站,将秒杀系统单独部署,使用独立的域名独立的服务器,独立的数据库。这样即使秒杀系统挂了,也不影响整个网站的功能。
  2. 对所有商品页面做静态化处理,重新设计秒杀商品页面,不使用原来的商品页面。用户访问商品时,不必访问数据库,直接访问静态化页面。
  3. 向运营商单独购买秒杀系统的带宽,减轻服务器压力,将所有秒杀商品页面缓存在CND中,同时向CDN服务器购买增加的带宽。

诸如此类的还有很多技术难关需要攻克,小编所知也非常有限。比如近几年流行的大数据,云计算,分布式数据库,搜索引擎等这些技术早就在双十一中应用了。所以为了表示对技术人员崇高的敬意,小编决定今年双十一买一千块以上的东西。哈哈,准备剁手买买买了。

原文发布于微信公众号 - java工会(javagonghui)

原文发表时间:2018-10-29

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

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

文档知识库的演进和小结

本文是今天下午在我的自动化运维群做的分享,群里每天都有一到两个主题的分享,目前来看效果还不错。正文如下: 我看过很多公司的知识库,干脆叫它文档库也可以。总体来...

4494
来自专栏服务端技术杂谈

今天你为什么更应该学习JavaScript?

几周前的NodeSummit 2016结束后,给人感觉是毫无疑问Javascript和特别是Node正在蚕食世界。 NodeSummit提供几个案例学习显示,...

2978
来自专栏SDNLAB

11项关键可视化促使SD-WAN迈向成功

SD-WAN部署正在迅速成为全球网络运营(NetOps)团队的主要关注点,并且正在改变网络的面貌。事实上,Gartner估计,到2021年,将近三分之二的企业将...

942
来自专栏腾讯技术工程官方号的专栏

TEG Cheers | 腾讯技术工程运维技术沙龙精彩回顾(内置现场视频)

981
来自专栏优惠券

如何用PHP开发一个完整网站?

作为世界上最好的语言PHP,在2018年发展依然一路凯歌。PHP语言受到众多企业家们的喜爱。众所周知,PHP技术主要用于一个网站的后台开发。那么如何用PHP开发...

5080
来自专栏即时通讯技术

开源IM工程“蘑菇街TeamTalk”的现状:一场有始无终的开源秀

随着云IM的发展,已吸引越来越多有IM需求的APP接入。但考虑到云IM无论从商业模式还是运营模式上,还需经过多年的沉淀,才可能真正实现客户与服务商的运营和服务良...

5732
来自专栏猿人谷

一天一点学linux

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。就像是战争,你有勇气战胜一切敌人,但你...

2806
来自专栏linux、Python学习

你到底懂不懂什么是Linux运维工程师?

作为互联网的幕后英雄,Linux运维工程师长期隐匿在大众认知范围之外,关于运维的讨论仍旧是一片无人涉足的荒漠。在某知名行业研究调查结果中,非互联网从业者对于运维...

2702
来自专栏IT大咖说

微信支付大规模前端开发背后,如何用外包解决困境

摘要 业务高速发展离不开各种配套运营系统的高效建设,微信支付也不例外。在前端人力极其匮乏的条件下我们另辟蹊径,大规模引入外包团队协同作业,并且在如何保证效率和质...

4426
来自专栏张善友的专栏

怎样才有资格被称为开源软件

    发现国内不少软件都开源了。但很奇怪,他们都有自己相同一套的软件版权许可协议。这些软件许可协议跟开源本身的精神是有冲突的。举个例子:     摘自Dis...

22610

扫码关注云+社区

领取腾讯云代金券