标题有点哗众取宠的味道了,当然了背后到底是谁不重要,重要是创造了这一盛举的背后到底发生了什么?写这篇文章的时候,国庆将至,我就在想双十一还会远吗?每年的双十一伴着TT猫的打折促销活动如约而至,疯狂的购物也不能让人遗忘它最初的意义——光棍节,单身的人们是感叹调侃一句不着急,还是早已春心欲动,因为这样或那样的原因,至今一人看花,程序猿的你依旧是单身汪。
不得不说TT猫的迅猛发展得益于互联网和中国的人口红利,否则何来上亿级的并发请求,所以小马哥你最应该感谢的是全国人民。
那么TT猫又是如何抵挡住上亿用户的访问?这不得不佩服TT猫的工程师们,看过淘宝技术这十年都知道,架构从来不是从初始就有的,也不是精心设计而成的,而是随着业务慢慢演进而来的。当然了,小马哥自己也曾说过:双十一从互联网技术本身大容量的并发处理可能已经达到了人类社会的极限,到目前为止的极限,当然了还有很大的提升空间,支付能力巨大提升,物流能力巨大提升。
今天,就扯开跟大家聊一聊TT猫是如何来驾驭双十一的,首先大家看一张全系后端架构图(请自行忽略部分环节和细节):
防御篇
俗话说的好,人怕出名猪怕壮,树大招风风撼树。其实说这些,就是有些不怀好意的"黑客"从中作梗,恶意攻击使坏,见不得别人好。但是大家有没有发现,每年的双十一TT猫基本上都会平稳度过,为什么?现如今,曾经的小猫也成为了老虎,每年的双十一小马哥特别增强了海量DDoS清洗能力,可以完美防御SYN Flood、ACK Flood、ICMP Flood、UDP Flood、NTP Flood 、SSDP Flood、DNS Flood、HTTP Flood、CC攻击,就问你?黑客们,怕不怕?
记得知乎上有人问过,黑客为什么不攻击淘宝?有个答主回答的比较全面与大家分享一下:
- 攻击了,没啥动静
- 攻击了,制造出动静了,监控发现了,动静不大掐灭了
- 攻击了,制造出动静了,监控发现了,动静有点大逮起来了
- 一听阿里,没信心能进去,算了
- 一听阿里,没信心能出来,算了
且看下面更生动形象逗比的回答,其实我们都是DDOS的一份子:
你不知道么,每年双十一都有超大规模的ddos攻击啊,去年我也参与了,就是成本有点高,肉疼,还吃了一个月的土~
解析篇
首先,我们来看一张"双十一"各省消费排行前10(12小时数据),图片源于网络,我们暂且不谈数据准确性以及后面到底有几个零,作为工程师更应该要关心的是数据排行分布情况。
大家都知道像TT猫这样的巨型猫,光靠一张嘴怎么能吃下这么多剁手党?
安装使用过宽带的小伙伴们,可能会遇到各种服务商,什么铁通,网通,长城之类的,其实大多租赁的是电信或者联通的线路。不知道大家有没有听说过这样一句话: 世界上,最遥远的距离不是南极和北极,而是电信和联通。尼玛,玩游戏扔键盘的有么有?
江湖流传,北联通南电信,检测一下TT猫域名的A记录,以下是截取的部分记录,TT猫根据省份或者城市的人口以及消费情况做了不同的IP解析。
集群篇
其实云解析篇,就是最简单最原始的集群实现,它根据用户的请求按照地域划分,根据用户的网络环境分配最合适的主机服务,不管你是电信还是网通都畅通无阻。
下面是TT猫的集群基础架构图,负载均衡采用集群部署,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性,阿里云当前提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡服务。
- 四层采用开源软件LVS(Linux Virtual Server)+ keepalived的方式实现负载均衡,并根据云计算需求对其进行了个性化定制。
- 七层采用Tengine实现负载均衡。Tengine是由淘宝网发起的Web服务器项目,它在Nginx的基础上,针对有大访问量的网站需求,添加了很多高级功能和特性。
缓存篇
如上图所示,我们在应用服务和数据库之间加一层选择cache,这层cache这里采用Redis集群,由于Redis是基于内存设计,大家都知道内存的读写速度远比磁盘快得多,对于热点数据或者基于某种应用场景的快速响应,我们可以把数据暂存至Redis,来加速数据的读写,减少磁盘IO的操作,减少重复查询,提高吞吐量,缩短响应时间。
当然了,做到以上缓存的配置还远远不够,这里只是简单的介绍一下后端缓存架构原理。对于前端,能够优化的地方可能会更多,比如浏览器缓存、CDN缓存等等。
队列篇
双十一哪天,每个人都是DDOS的一份子,有女朋友的在忙着给女朋友清空购物车,没男朋友的忙着给自己清空购物车。
狂欢的这一天肯定少不了秒杀或者团抢,这时候就需要使用消息队列来进行流量削锋,要知道再强大的DB也承受不住如此大的并发请求,数量有限,解决问题的办法就是让大家安安静静的排队。
当然了,全靠后端服务还远远不够的,对于大并发的秒杀或者团抢,我们需要提前生成静态HTML内容并推送至CDN,而不是等用户主动去拉取。同时为了防止作弊和刷抢,还需要做好前台校验,比如常见的图片验证码,手机验证码校验服务,对于恶意IP后台直接禁止访问。
数据篇
近几年TT猫双十一直播大屏给大家带来了不少惊喜,你以为那一个亿一个亿的跳动、突破、刷屏以及立体全方位的统计排名是美工PS的吗?
显然不是,TT猫通过自研的大数据计算服(MaxCompute)能够快速、完全托管的 GB/TB/PB 级数据仓库。MaxCompute 拥有完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决海量数据计算问题。
这仅仅是数据处理,更多详见:阿里DataV 2016双十一媒体大屏回顾&技术分享
日志篇
对于日志的重要性,相信大家都不言而喻了吧,但是仍会有不少公司并不是太重视,有的随手往数据库一扔,也有的写入文本,各种类型的日志甚至都不会太去区分,只有线上出问题了才会去翻翻看。
当然了大部分互联网公司还是比较重视日志的存储、分析、监控的,提到日志实时分析,不少人都会想到比较流行的开源日志组件的ELK Stack(Elastic/Logstash/Kibana)来搭建,在社区中有大量的内容和使用案例。
当然了,对于大公司而言,不仅仅满足于这些开源组件,比如TT猫的日志服务(SLS),以下是日志从收集到分析的整体架构:
相比自建ELK它又有什么优势呢?据说,SLS在提供同样查询速度、更高吞吐量、更强分析能力背后只需要开源方案13%成本。
只有完善的日志采集、存储、清洗、展示,才会保障线上实时的监控预警,为双十一保驾护航。
娱乐篇
梦想还是要有的,钱多了就能实现。
马云合壁,江湖放歌,或许再过几年,小马哥就可以出专辑了。
总结
简单几篇怎么能概述的了TT猫备战双十一的艰辛历程呢,无论是前端设计,后端架构还是让人嫌弃的产品狗都参与其中,每年都会为大家呈现一个不一样的狂欢节。只能说,一群优秀的人创造了一个了不起的公司,才有了今天的狂欢。
最后弱弱的问下,运维小哥你准备好了么?据说某浪能同时抗压8个明星出轨。