“双十一”即指每年的11月11日,由于日期特殊,因此又被称为光棍节。而大型的电子网站一般会利用这一天来进行一些大规模的打折促销活动,以提高销售额度。它们选择“双十一”促销也是为了错开线下促销的周期。国庆、圣诞、元旦都是实体店促销的时间节点,于是从国庆假期后至圣诞节前实体店会形成促销的真空期,但是为了完成销售任务,商家必须提前在11月发力。从2009年11月11日,淘宝商城举办了第一届双十一促销到现在,已经举办了三届,在2012年的“双十一”购物狂欢节总销售额191亿,今年的 “双十一”购物狂欢节预计销售额会超过200亿。
一个购物网站要在一天处理完成超过1亿笔的交易,淘宝是如何做到的呢?其实,在网站简单的买卖交易背后,凝结了数千人默默无闻的运维保障工作。除了要完成交易,还有更多的时间用户是在浏览网站的商品,如果一个网页点击超过5秒才打开链接,这也将严重影响用户的体验,因此在确保买卖交易可以完成的同时,还要在如此大的访问量的情况下,保证用户的购物体验,这不得不说是一项艰巨的任务。早在2012年,淘宝“双十一”购物狂欢节的一分钟内千万级别访问量涌入,导致购物车和支付宝无法访问。大家知道这时千万级别的ID不仅仅是每个用户的数据,同时包括所购买产品的数据、包括银行系统的高并发访问。瞬间海量数据的I/O,如此高的并发用户访问、检索以及支付导致硬件工作负荷加大,自然就会形成自我保护性关闭或崩溃,从而使网站瘫痪。
“双十一”期间淘宝网站的访问量是平时的几倍、甚至几十倍,原有的数据中心性能是无法满足的,而这种促销就只有一天,淘宝又不可能大肆的扩大数据中心规模而去保障这一天,这样会造成大部分时间数据中心处于资源浪费状态,因此只能从别的方面考虑优化。从访问量上来讲,也就是在“双十一”刚开始的几分钟流量最大,流量瞬间变大,后续的一天的时间流量基本都比较稳定,一天过后流量大大下降。面对瞬间巨量的访问,数据中心会进行分流,淘宝的数据中心遍布全国各地,大量的数据访问分多次、多地点进行,可以实现多站点并行作业,保证高并发的数据访问。经过3年的“双十一”活动,淘宝已经对突发的访问量能够做好预估,根据现有的数据中心处理性能,适当地增加一些临时设备,启用备用系统,从而确保淘宝顺利平稳过渡“双十一”。
在淘宝有一个应用运维团队,即PE团队。PE团队负责淘宝网在线交易、广告系统、数据平台等应用运维系统技术部门,是为淘宝带来高速增长核心运维团队。“双十一”购物节也给PE团队带来了巨大压力。基本上为了应对“双十一”购物节,PE团队提早就做足了准备工作。比如包括:检查全国各地数据中心运行负荷情况,以便在高峰流量到来时灵活分散访问流量;增加备件,做好配置,大量的设备硬件出现故障不可避免,在关键业务设备做好备件,一旦出现故障及时更换,将故障时间控制在几分钟内;协调好各种设备的供应商厂家工程师驻场待命,以便出现故障时,和PE团队共同处理,减少中间的沟通环节,缩短故障处理时间;启动这种应急预案,对可能发生的突发情况进行预判,制定响应的方案;在“双十一”之前进行故障模拟演练,验证解决方案是否可行。在做好的充分准备后迎接“双十一”的到来。
在11・11购物节的24小时里,PE团队的人员会时刻关注着淘宝网站的运行情况。主要监控三个方面的状况:
一、是监控业务层面。比如说本来每秒创建是2000笔的,现在突然一下降成500笔了,这就可能有问题了,再有可能订单生成,有丢单等等,这些业务层面的问题会大大影响销售额,这样PE团队就会立即召集业务部门和软件开发系统的人员公共分析问题原因。
二、是应用系统监控。检查JVM跑的是否正常,是不是有频繁的垃圾回收,反馈时间是否在200MS以内,一旦反馈时间超过200MS,则访问网站的速度就会下降,如果超过500MS,则访问网站的体验就会很差了。这时PE团队要系统软件开发人员共同分析问题,找过故障点。
三、是基础设施保障。这种基础的包括网络、服务器、存储设备等。比如说我们的路由器是不是通的,我们的交换是不是有问题啊,DNS服务是不是有问题啊,等等。
“双十一”购物节过后,PE团队要对数据中心出现的问题进行总结,杜绝类似问题再次发生,这个节日是对淘宝数据中心的一次巨大考验,很多问题都会在这样的突发流量下暴漏出来,所以对于PE团队也是难得的一次学习机会。淘宝的数据中心出口带宽已经超过两个T,就是在峰值的时候,每秒出去两个T的数据。由此可见,淘宝数据中心的处理能力是超强的,但简单的提升网络访问带宽还远远不够,需要的是淘宝数据中心整体的处理性能的提升。经过“双十一”购物节的洗礼,PE团队会找到目前数据中心薄弱的地方,然后再不断改进。
在淘宝,要求数据中心全年断网时间不能超过2小时,故障等级分为四级:P1~P4。P1是最严重的故障,P4最轻微。如果频繁出现P1故障,那么PE团队人员的收入都会受到损失。因此,PE团队时刻都保持了如履薄冰的心态,应对每一次突发问题。其实在任何一个数据中心都一样,我们在享受数据中心带来的生活、工作便利的同时,在其背后是有无数的技术工作者提供运维保障,正是这些默默无闻的运维人员辛苦的工作才构筑了我们今天美好的生活。