阿里双十一秒杀系统架构设计 有哪些关键点
在昨日2018年天猫双十一的盛大购物狂欢中,累计销售额突破了惊人的2135亿大关!今天,让我们一同深入探讨在这一盛大商业活动背后,阿里秒杀系统技术架构的构建理念,以及如何去设计一个能承受高并发负载的秒杀系统架构。
我们面临的技术挑战十分严峻:
一是秒杀活动对原有业务形成的冲击。秒杀活动作为网站营销的重要一环,时间短、参与人数众多,若与原有业务共用服务器资源,必将对现有业务带来不小的压力。对此,我们选择将其独立部署,甚至使用独立域名,使其与网站完全隔离,确保秒杀活动的高效运行。
接下来是高并发下的数据库与应用负载问题。用户在秒杀开始前会不断刷新页面以获取最佳抢购机会,这无疑会给应用服务器和数据库服务器带来巨大的负载压力。为了应对这一问题,我们重新设计了秒杀商品页面,采用静态页面形式,用户请求无需经过应用服务,直接访问页面内容,大大降低了服务器的负载压力。
突然增大的服务器和网络带宽需求也是一大挑战。为了应对这一问题,我们选择与运营商合作,租借更多的网络带宽资源。为了减轻网站服务器的压力,我们将秒杀商品页面缓存到CDN中,确保用户能够快速访问。
为了防止秒杀前下单的行为,我们采取了动态生成下单页面URL的策略。在秒杀开始前,即使秒杀系统的开发者也无法访问下单页面的URL。该URL会加入由服务器端生成的随机数作为参数,确保只有在秒杀开始时,用户才能获取到正确的下单页面链接。
应对策略方面,除了上述提到的独立部署、页面静态化、租借网络带宽和动态生成下单页面URL等策略外,我们还注重架构设计。例如,购买按钮只有在活动开始时才能点亮,而页面其余时间呈静态状态。为了解决这个问题并减轻服务器负载压力,我们设计了一个静态页面,并缓存在CDN、反向代理服务器甚至用户浏览器上。在下单过程中,我们允许靠前个订单提交,以减轻下单页面服务器的负载压力。
阿里秒杀系统的技术架构设计旨在确保在高峰时段提供稳定、高效的服务。通过独立部署、页面静态化、租借网络带宽、动态生成下单页面URL以及精细的架构设计,我们成功构建了一个能够应对高并发负载的秒杀系统,为用户带来无与伦比的购物体验。